【发布时间】: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 之外维护复选框列表的状态,但这并没有帮助。我无法找到一种方法来维护复选框列表(位于网格视图中)的状态并将其保存到数据库中。
【问题讨论】:
-
@AmitKumar:我读了这篇文章,但因为它是用于复选框,它对我没有帮助。
标签: c# asp.net gridview checkboxlist