3

在我的 aspx 页面中,我正在使用复选框列表控件并从数据库中填充数据。但是当我用来选择项目并调试我的代码时,选择的属性总是错误的。如何解决这个问题。

我的代码是

 <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.IsPostBackis时才执行此操作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 回答