2013-07-30 108 views
0

我有一个网格,我想在其中动态绑定网格的标题列。将文本绑定到gridview标头

对于我提出电网为:

<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为对象Referace,当我做出快速监视这是给它的值作为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

绑定数据源后仅低于试图重命名像

gv.HeaderRow.Cells(0).Text = ds.tables(1).columns(0).columnName; 
gv.HeaderRow.Cells(2).Text = ds.tables(1).columns(1).columnName; 

列也处理的行计数值> 0

一些像上面