2010-12-08 81 views
2

我知道这个问题在C#中得到了回答,我一直在尝试转换并使其工作,但尚未成功?添加标题VB.net/asp.net gridview?

,如果你帮

image

这是这个问题的图像我将不胜感激,我想要做类似的事情。

这里是链接 ASP.NET GridView second header row to span main header row

Dim d As Date = Date.Today 
     d = d.AddDays(-1) 
     Label1.Text = d 

     'connects to datawarehouse 
     saocmd1.Connection = conn1 
     conn1.Open() 

     Dim ds As New DataSet 

     'selects sql query 
     'saocmd1.CommandText = MYQUERY" 
     saoda1.Fill(saods1, "salesasoftable") 

     Dim row As New GridViewRow(0, -1, DataControlRowType.Header, DataControlRowState.Normal) 

     Dim left As TableCell = New TableHeaderCell() 
     left.ColumnSpan = 3 
     row.Cells.Add(left) 

     Dim totals As TableCell = New TableHeaderCell() 
     totals.ColumnSpan = gridview1.Columns.Count - 3 
     totals.Text = "Totals" 
     row.Cells.Add(totals) 

我的错误

Specified argument was out of the range of valid values. 
Parameter name: index 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. 
Parameter name: index 

Source Error: 


Line 54:  row.Cells.Add(totals) 
Line 55: 
Line 56:  Dim t As Table = TryCast(gridview1.Controls(0), Table) 
Line 57:  If t IsNot Nothing Then 
Line 58:   t.Rows.AddAt(0, row) 

答案

Dim row As New GridViewRow(0, -1, DataControlRowType.Header, DataControlRowState.Normal) 

'spanned cell that will span the columns I don't want to give the additional header 
Dim left As TableCell = New TableHeaderCell() 
left.ColumnSpan = 6 
row.Cells.Add(left) 

'spanned cell that will span the columns i want to give the additional header 
Dim totals As TableCell = New TableHeaderCell() 
totals.ColumnSpan = myGridView.Columns.Count - 3 
totals.Text = "Additional Header" 
row.Cells.Add(totals) 

'Add the new row to the gridview as the master header row 
'A table is the only Control (index[0]) in a GridView 
DirectCast(myGridView.Controls(0), Table).Rows.AddAt(0, row) 
+0

什么问题?提供问题的链接。 – 2010-12-08 14:56:57

+0

@geoff我会忘记添加链接。 – MyHeadHurts 2010-12-08 14:58:03

回答

0

最简单的方法是在RowCreated事件上处理这个问题。您将测试正在处理的RowType,并且如果它是标题,则您:

  1. 清除有问题的行单元格。
  2. 将第一个单元格的行距调整为2(如果是图片,则为数量发送)。
  3. 立即删除行单元格(在您的图像的情况下:总销售额)。
  4. 创建一个如表所示的新表格。
  5. 将您的新表插入所需的行单元格中。

如果你已经拥有你希望使用的解决方案,但它在C#中,你不能将它,试试这个工具:http://www.developerfusion.com/tools/convert/csharp-to-vb/