【问题标题】:Maintain state of checkboxlist inside gridview asp.net在gridview asp.net中维护checkboxlist的状态
【发布时间】:2014-06-27 06:17:31
【问题描述】:

我在 gridview 的一列中有一个复选框列表(有 4 个列表项)。它不是从数据库中填充的。当我导航到另一个页面时,我想保持所有列表项的状态(选中或未选中)网格视图。我尝试为网格视图和复选框列表设置EnableViewstate="true",但它不起作用。这是html标记:

<asp:GridView ID="grdUnits" runat="server" AutoGenerateColumns="false"
                        AllowPaging="true" PageSize="20" OnRowDataBound="grdUnit_RowDataBound" OnPageIndexChanging="grdUnit_PageIndexChanging" 
                        RowStyle-BackColor="White" AlternatingRowStyle-BackColor="LightBlue"  BorderStyle="Solid"
                        Height="426px" Width="1500px">
                        <PagerSettings  Mode="Numeric" />
                        <Columns>
                             <asp:BoundField DataField="SUKEY" HeaderText="Unit Code" />
                             <asp:BoundField DataField="CREDITS" HeaderText="Credits"/> 
                             <asp:TemplateField>
                                 <HeaderTemplate>Standard Semester or Term</HeaderTemplate>
                                 <ItemTemplate>
                                     <asp:CheckBoxList ID="cblStandardSem" runat="server" RepeatDirection="Horizontal" TextAlign="Left" RepeatLayout="Table">
                                         <asp:ListItem Value="SummerTermSemSt" Text="14ST"></asp:ListItem>
                                         <asp:ListItem Value="Semester1St" Text="14S1"></asp:ListItem>
                                         <asp:ListItem Value="WinterTermSemSt" Text="14WT"></asp:ListItem>
                                         <asp:ListItem Value="Semester2St" Text="14S2"></asp:ListItem>
                                     </asp:CheckBoxList>
                                 </ItemTemplate>
                                 <ItemStyle Width="300px" HorizontalAlign="Center" VerticalAlign="Middle"/>
                             </asp:TemplateField>

                        </Columns>
                    </asp:GridView>

背后的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
          BindDataGrid();
    }
}

private void BindDataGrid()
{
    //fetch data from database
    grdUnits.DataBind();
}

protected void grdUnit_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
     grdUnits.PageIndex = e.NewPageIndex;
     BindDataGrid();
}

我遇到过一些帖子,其中提到了在 gridvew 之外维护复选框列表的状态,但这并没有帮助。我无法找到一种方法来维护复选框列表(位于网格视图中)的状态并将其保存到数据库中。

【问题讨论】:

标签: c# asp.net gridview checkboxlist


【解决方案1】:

无论您是否设置EnableViewstate="true" 都没有关系,当您的控件(CheckBoxList)未填充或未从数据库检查时,您的控件将在您调用网格视图的任何时候丢失检查的数据数据绑定方法。

我能想到的唯一方法是将控制数据保存在 Session 变量中,但如果您的网格视图中有数百条记录,这将是疯狂的。你肯定不想让你的服务器变慢。

因此,如果您的网格视图上有大量记录,我强烈建议您通过数据库处理状态。

【讨论】:

  • 我最终会写入数据库,但我想在分页 gridview 时保持状态。假设用户在第一页的几行中选择了几个项目,跳转到第四页...选择更多项目,然后返回第一页。我想恢复选择的值。
  • 我知道你到底想做什么,正如我所说,使用会话变量可以做到这一点,所以你只需在grdUnit_PageIndexChanging 事件中将控制值设置为会话。并在同一事件中使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多