ASP Gridview在templateField中更改标头

时间:2014-07-09 12:57:28

标签: asp.net vb.net gridview rendering

我想在我的Codebehind中设置一个Checkbox(位于我的Gridview的Header中)。在这里你可以看到我的Templatefield

  <asp:GridView ID="MyGridView" runat="server" AutoGenerateColumns="false" DataSourceID="DataSource1" AllowSorting="True"
                AllowPaging="true" CellPadding="4" ForeColor="#333333" GridLines="None" UseAccessibleHeader="True" ViewStateMode="Enabled"
                OnSorting="onSort" EmptyDataText="Keine Daten gefunden! Setzen Sie die Filter zurück und versuchen Sie es erneut.">
  <AlternatingRowStyle BackColor="White" ForeColor="#284775" />

...

  <asp:TemplateField>
      <ItemTemplate>
          <asp:CheckBox runat="server" Checked='<%# Eval("SomeData")%>' Enabled="false" />
       </ItemTemplate>
       <HeaderTemplate>
          <asp:LinkButton runat="server" Text="NÜ" CommandName="Sort" CommandArgument="SomeData" ForeColor="White" ToolTip="SomeData"></asp:LinkButton>
          <br />
          <asp:CheckBox ID="checkSearchSomeData" runat="server" AutoPostBack="true" OnCheckedChanged="onFilter"/>                                
       </HeaderTemplate>
    </asp:TemplateField>

我按照这里显示的方式尝试了它:

    Dim tc As TableCell = MyGridView.HeaderRow.Cells(2)
    For Each c As Control In tc.Controls
        If c.GetType.Equals((New CheckBox).GetType) Then
            Dim cb2 As CheckBox = c
            cb2.Checked = True
            cb2.DataBind()
            tc.DataBind()
            MyGridView.DataBind()
        End If
    Next

我也尝试过这种方式:

    Dim cb As CheckBox = MyGridView.HeaderRow.FindControl("checkSearchSomeData")
    cb.Checked = True
    cb.DataBind()

但在我的Gridview中没有选中Checkbox。我认为它与渲染有关。

有人可以帮忙吗?谢谢!当然,我也很高兴看到改变其他东西的例子,然后是一个Checkbox!

1 个答案:

答案 0 :(得分:0)

好的,我找到了一些解决方案。它使用会话变量为已检查的信号工作,请参见此处:

<asp:TextBox ID="txtSearchVorname" runat="server" Text='<%# Session("Test") %>' AutoPostBack="true" OnTextChanged="onFilter" CssClass="grid_tb"></asp:TextBox>

当然你也可以使用复选框和签到的符号!