簡體   English   中英

在GridView的asp.net內部維護復選框列表的狀態

[英]Maintain state of checkboxlist inside gridview asp.net

我在gridview的一列中有一個checkboxlist(帶有4個listitems),它不是從數據庫中填充的。當我導航到gridview的另一頁時,我想保持所有listitems(選中或未選中)的狀態。我嘗試為gridview和checkboxlist設置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外部維護復選框列表的狀態,但這沒有幫助。 我無法找到一種方法來維護checkboxlist(位於gridview中)的狀態並將其保存到數據庫中。

不管是否設置EnableViewstate="true" ,當控件(CheckBoxList)未填充或未從數據庫進行檢查時,控件都將在您每次調用網格視圖DataBind時丟失已檢查的數據方法。

我能想到的唯一方法是將控制數據保存在Session變量中,但是如果您在網格視圖中有數百條記錄,這將非常瘋狂。 而且您絕對不想讓服務器變慢。

因此,如果網格視圖上有大量記錄,強烈建議通過數據庫處理狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM