将文本绑定到gridview标头

时间:2013-07-30 09:28:13

标签: asp.net .net vb.net visual-studio-2008 webforms

我有一个网格,我想在其中动态绑定网格的标题列。

为此我制作了网格:

 <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,如上所示,但此代码也出现了同样的错误。

请帮帮我。

1 个答案:

答案 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

上面的一些事情