下拉列表以填充复选框

时间:2013-10-28 19:44:20

标签: asp.net checkbox sql-update html-select

我的asp.net应用程序目前使用Telerik RadGrid显示产品数据。在页面顶部,我有一个下拉列表,其中包含4个不同的类别。根据用户对类别的选择,网格中的复选框将被选中或不被选中。该网站的1500个产品将始终显示在网格中,它是将要更改的复选框。

例如:产品1属于A类,因此如果用户在下拉列表中单击B类,则将取消选中产品1旁边的复选框。要检查的唯一方法是用户是否更改下拉列表以查看当前属于类别A的产品。

我无法弄清楚如何处理这个问题。例如,行if (ProductInMarket.Checked = true) throws an error saying名称ProductInMarket'在当前上下文中不存在。我遇到的第二个问题是我无法弄清楚如何完成UpdateMarket方法。当你在编码过程中吃午饭时会发生这种情况。 :/

这是我到目前为止所做的,我真的很感激这里的一些帮助。

<asp:DropDownList ID="MarketDropDownList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="MarketDropDownList_SelectedIndexChanged" AppendDataBoundItems="true">
 </asp:DropDownList>


<telerik:GridTemplateColumn AllowFiltering="true" HeaderText="Product ID" UniqueName="productid" ReadOnly="true">
 <HeaderTemplate>
   <asp:CheckBox ID="headerCheck" runat="server"                                      onClick="javascript:SelectDeselectAllCheckboxes(this);" />
 </HeaderTemplate>
 <ItemTemplate>
     <asp:Checkbox ID="ProductInMarket" runat="server" />
     <asp:HiddenField runat="server" ID="ProductID" />
  </ItemTemplate>
  </telerik:GridTemplateColumn>



private void UpdateMarket(string MarketID)
    {
        //add products to market when checked
        if (ProductInMarket.Checked = true)
        {
            string strConn = ConfigurationManager.ConnectionStrings["DBConnectingString"].ToString();
            using (SqlConnection con = new SqlConnection(strConn))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = "UPDATE table SET ProductID = @ProductID WHERE MarketID = @MarketID";
                 }
             }
         }
     }

2 个答案:

答案 0 :(得分:0)

我建议您通过Performing Batch Operations Using DataAdapters批量更新。

注意:UpdateBatchSize属性是此处的关键,因为它告诉ADO.NET每批中要发送的项目数。将其设置为零将强制批处理尽可能大,将其设置为1将基本上使其忽略批处理,因为它将一次发送一个。您需要使用此值来获取最佳值,同时考虑性能和内存使用情况(较大的批次将占用更多内存,直到清理完毕)。

答案 1 :(得分:0)

<asp:DropDownList ID="MarketDropDownList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="MarketDropDownList_SelectedIndexChanged" AppendDataBoundItems="true">
 </asp:DropDownList>


<telerik:GridTemplateColumn AllowFiltering="true" HeaderText="Product ID" UniqueName="productid" ReadOnly="true">
 <HeaderTemplate>
   <asp:CheckBox ID="headerCheck" runat="server"                                      onClick="javascript:SelectDeselectAllCheckboxes(this);" />
 </HeaderTemplate>
 <ItemTemplate>
     <asp:Checkbox ID="ProductInMarket" runat="server" />
     <asp:HiddenField runat="server" ID="ProductID" />
  </ItemTemplate>
  </telerik:GridTemplateColumn>



private void UpdateMarket(string MarketID)
    {
        //add products to market when checked
        if (ProductInMarket.Checked = true)
        {
            string strConn = ConfigurationManager.ConnectionStrings["DBConnectingString"].ToString();
            using (SqlConnection con = new SqlConnection(strConn))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = "UPDATE table SET ProductID = @ProductID WHERE MarketID = @MarketID";
                 }
             }
         }
     }

试试这个

jsfiddle