【问题标题】:Update db based on checkbox selection(s) in Repeater control根据中继器控件中的复选框选择更新数据库
【发布时间】:2015-11-16 13:10:45
【问题描述】:

在 Visual Studio 中,我有一个中继器。这功能很好。它有复选框和标签。如果有人选中了中继器中的复选框,我希望我的按钮被点击并根据选中和未选中的内容更新我的数据库

我的代码当前选择所有字段并更新数据库中的所有字段(所有行都设置为可见 = 0)。我只希望 CHECKED 框获得 Visible = 0。我需要一个 WHERE 语句,它以某种方式只看到选中的字段,但我不知道如何做到这一点。

这是我的中继器:

        <asp:Repeater ID="Repeater1" runat="server">
   <ItemTemplate>
     <table>
        <tr>
            <td>
 <asp:CheckBoxList ID="CheckBoxList1" runat="server">
       <asp:ListItem></asp:ListItem></asp:CheckBoxList>
            </td>
              <td> <asp:Label ID="lblTest" runat="server" Text='<%# Eval("MyColumn") %>'></asp:Label>
            </td>
     </table>
   </ItemTemplate>
</asp:Repeater>

这是我的按钮:

protected void ButtonSubmit_Click(object sender, EventArgs e)
    {

        using (SqlConnection sqlConn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["Events2"].ConnectionString))
        {
            sqlConn2.Open();

            using (SqlCommand sqlCmd2 = new SqlCommand())
            {
                sqlCmd2.Connection = sqlConn2;
                sqlCmd2.CommandType = System.Data.CommandType.Text;

                foreach (RepeaterItem aItem in Repeater1.Items)
                {
                    CheckBoxList CheckBoxList1 = (CheckBoxList)aItem.FindControl("CheckBoxList1");
                    foreach (ListItem listItem in CheckBoxList1.Items)
                    {
                        if (listItem.Selected == true)
                        {
                        sqlCmd2.CommandText = string.Format("UPDATE FormField SET Visible = 0");
                        sqlCmd2.ExecuteNonQuery();
                        }
                        else
                        {
                            //do something else
                        }
                    }


                } sqlConn2.Close();

            }

        }
    }

【问题讨论】:

    标签: c# asp.net visual-studio checkbox


    【解决方案1】:

    您的问题出在您的 SQL 中。没有 WHERE 的 UPDATE 将应用于表中的所有行。我猜你的表和数据结构,但你的解决方案可能看起来更像这样:

    CheckBoxList CheckBoxList1 = (CheckBoxList)aItem.FindControl("CheckBoxList1");
    
    foreach (ListItem listItem in CheckBoxList1.Items)
    {
      if (listItem.Selected)
      {
        sqlCmd2.CommandText = string.Format("UPDATE FormField SET Visible = 0 WHERE MyField = '{0}';", listItem.Value);
        sqlCmd2.ExecuteNonQuery();
      }
      else
      {
        //do something else
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多