【发布时间】:2013-07-30 08:59:24
【问题描述】:
我有一个网格,我想在其中动态绑定网格的标题列。
为此,我将网格设置为:
<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 作为 Object Referenceace 时给了我错误,当我制作 quickwatch 时它的值是 Referance object has value of nothing
我用 BindGrd 函数编写了相同的代码,将其调用为:
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,如上图所示,但这段代码也给出了同样的错误。
请帮帮我。
【问题讨论】:
标签: asp.net .net vb.net visual-studio-2008 webforms