3

私のaspxページでは、チェックボックスリストコントロールを取得し、データベースからデータを入力しています。しかし、アイテムを選択してコードをデバッグすると、常に選択されたプロパティが false になっていました。これを解決する方法。

私のコードは

 <asp:CheckBoxList ID="chkProduct" Width="200px" Height="90px" runat="server"    
 RepeatDirection="Vertical" style="overflow-y: scroll;
                            overflow-x: scroll;">
                       </asp:CheckBoxList>


コードビハインド

 for (int j = 0; j < chkProduct.Items.Count; j++)
    {
        //CheckBoxList chkProduct;
        foreach (ListItem list in chkProduct.Items)
        {
            if (list.Selected )
            {
                enquiryProducts = new Services.EnquiryProduct();
                enquiryProducts.IsDelete = false;
                enquiryProducts.ProductID = Convert.ToInt32(chkProduct.Items[j].Value);
                enquiryProductList.Add(enquiryProducts);
            }
        }
    }
4

3 に答える 3

1

ポストバックでリストをデータバインドしている場合、チェック済みの状態が失われる可能性があります。Page.IsPostBackリストをデータバインドするときは、 isの場合にのみ実行するようにしてくださいfalse

于 2012-12-13T06:05:09.110 に答える
0

チェックボックスリストをバインドしていましたか。
ページがロードされている場合は、次のようにポストバックではないことを確認する必要があります

if (!Page.IsPostBack)
{
  //put your binding code here
   List<CommonServices.Product> productList = commonClient.GetProductList(string.Empty, null, 1); 
   chkProduct.DataSource = productList.OrderBy(i => i.Name); 
   chkProduct.DataTextField = "ProductCodeWithName"; 
   chkProduct.DataValueField = "ID"; 
   chkProduct.DataBind();
}
于 2012-12-13T06:09:10.860 に答える
-1

これを試してください.. チェックボックスリストのautopostbackプロパティをTRUEに設定します

于 2012-12-13T06:17:25.877 に答える