我有一个网格,我想在其中动态绑定网格的标题列。
为此我制作了网格:
<asp:GridView ID="gvSearch" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkSubjects1" runat="server" />
</HeaderTemplate>
<HeaderTemplate>
<asp:CheckBox ID="chkSubjects2" runat="server" />
</HeaderTemplate>
<HeaderTemplate>
<asp:CheckBox ID="chkSubjects3" runat="server" />
</HeaderTemplate>
<HeaderTemplate>
<asp:CheckBox ID="chkSubjects4" runat="server" />
</HeaderTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我想将文本绑定到此标题复选框。
因此,我的第一个问题是在RowDataBound
事件上将文本绑定到它。
我做到了:
If e.Row.RowType = DataControlRowType.Header Then
For i As Integer = 0 To ds1.Tables(0).Columns.Count - 1
CType(e.Row.FindControl("chkSubjects'" & i + 1 & "'"), CheckBox).Text = DirectCast(ds1.Tables(0).Columns(i), System.Data.DataColumn).ColumnName
e.Row.Cells(i).Text = DirectCast(ds1.Tables(0).Columns(i), System.Data.DataColumn).ColumnName
Next
End If
但它在CType(e.Row.FindControl("chkSubjects'" & i + 1 & "'"), CheckBox).Text
作为对象反馈给我错误,当我制作快速表时,它的值为Referance object has value of nothing
我用BindGrd函数编写了相同的代码,将其命名为onload:
Private Sub BindGrd()
For i As Integer = 0 To ds1.Tables(0).Columns.Count - 1
CType(gvSearch.HeaderRow.FindControl("chkSubjects'" & i + 1 & "'"), CheckBox).Text = DirectCast(ds1.Tables(0).Columns(i), System.Data.DataColumn).ColumnName
Next
End Sub
这里我添加了HeaderRow
,如上所示,但此代码也出现了同样的错误。
请帮帮我。
答案 0 :(得分:1)
在下面绑定数据源之后,尝试重命名列
gv.HeaderRow.Cells(0).Text = ds.tables(1).columns(0).columnName;
gv.HeaderRow.Cells(2).Text = ds.tables(1).columns(1).columnName;
还处理行计数值&gt; 0
上面的一些事情