2017-07-13 1 views
0

vb.netのサブ見出しを付けてdatagridviewの行をグループ化する方法に問題があります。私は自分のdatagridviewに小見出しをつけたい。私はVB.NETには、このC#コードを変換してきましたが、何も起こりません:vb.netの小見出しでdatagridviewの行をグループ化する方法

private string subheading = ""; 
private bool createsub = false; 
// This method will peek ahead in the datasource to determine whether the 
    next 
// item will need a new subheading 
private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs 
e) 
{ 
switch (e.Item.ItemType) 
{ 
case ListItemType.Header: 
case ListItemType.AlternatingItem: 
case ListItemType.Item: 
DataTable dt = (DataTable)((DataGrid)sender).DataSource; 
// header or Subheading column value will change in next row 
if ((e.Item.ItemIndex == -1) || 
(e.Item.ItemIndex+1 < dt.Rows.Count && 
dt.Rows[e.Item.ItemIndex+1]["SubHeading"].ToString() != 
dt.Rows[e.Item.ItemIndex]["SubHeading"].ToString())) 
{ 
// get next subheading value 
subheading = dt.Rows[e.Item.ItemIndex+1]["SubHeading"].ToString(); 
createsub = true; 
} 
else 
createsub = false; 
break; 
} 
} 
// This method will create a subheading row if needed 
private void DataGrid1_ItemCreated(object sender, DataGridItemEventArgs e) 
{ 
switch (e.Item.ItemType) 
{ 
case ListItemType.AlternatingItem: 
case ListItemType.Item: 
if (createsub) 
{ 
DataGrid dg = (DataGrid)sender; 
TableCell tc = new TableCell(); 
tc.Controls.Add(new LiteralControl(subheading)); 
tc.ColumnSpan = e.Item.Cells.Count; 
tc.Attributes.Add("align", "left"); 
tc.Font.Bold = true; 
tc.BackColor = Color.FromArgb(220, 220, 220); 
DataGridItem di = 
new DataGridItem(e.Item.ItemIndex+1, 0, ListItemType.Item); 
di.Cells.Add(tc); 
Table t = (Table)dg.Controls[0]; 
t.Rows.Add(di); 
} 
break; 
default: 
break; 
} 
} 

と追加情報については、このコードは同じ結果と:

private void SeparateRows(ref DataSet ds, string columnName) 
{ 
int i = 0; 
string prevsub = ""; 
while (i <= ds.Tables[0].Rows.Count - 1) 
{ 
DataRow dr = ds.Tables[0].Rows[i]; 
// if category field value changes add a new row 
if (dr["Category"].ToString() != prevsub) 
{ 
prevsub = sub; 
DataRow newrow = ds.Tables[0].NewRow(); 
newrow["Title"] = "SubHeading"; // sub heading flag 
newrow[columnName] = dr[columnName]; // sub heading text 
// add row and increment counter to accommodate new row 
ds.Tables[0].Rows.InsertAt(newrow, i++); 
} 
i++; 
} 
} 


private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e) 
{ 
switch (e.Item.ItemType) 
{ 
case ListItemType.AlternatingItem: 
case ListItemType.Item: 
if (e.Item.Cells[1].Text.Equals("SubHeading")) 

私は明らかにされてアップロードされたこの画像を開こう:

Grouping Datagridview rows

私は実際にこれを達成するいくつかの助けを必要としています。してください、助けてください。ありがとう

+0

これはVB.NETですか? ;-) – muffi

+0

DatagridはDatagridviewとは異なります –

+0

ああ、申し訳ありません、そのASP.NETコードです。 vb.netコードでこれを行う方法は何ですか?それがあれば、親切に私といくつかのコードを共有してください。ありがとう – Diaval

答えて

0

私はいくつかの解決策を見つけることができました。

ここは私のコードです。

Private Sub dgvCurriculum_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles dgvCurriculum.CellFormatting 
    If e.RowIndex > 0 And e.ColumnIndex = 0 Then 
     If dgvCurriculum.Item(0, e.RowIndex - 1).Value = e.Value Then 
      e.Value = "" 
     ElseIf e.RowIndex < dgvCurriculum.Rows.Count - 1 Then 
      dgvCurriculum.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.White 
     End If 
    End If 
End Sub 

私の質問は完全に解決されていませんが、少しは簡単に解決しました。

関連する問題