使用复选框更新数据库

时间:2011-10-04 23:19:43

标签: c# jquery asp.net

我有一个数据网格,每行都有一个复选框。每行中的每个字段都可以更新

用户可以更新多行并选中任何复选框。

单击SUBMIT按钮,应更新所有数据。我需要复选框来更新数据库中的布尔值(或者sql服务器的bool类型)。

  1. 如何实现复选框以便能够更新数据库中的表?
  2. 点击提交按钮,如何获取所有要更新的数据?

2 个答案:

答案 0 :(得分:2)

如果您使用的是GridView,那么根据之前的示例中的示例,您可以执行此操作。 **这是半伪代码,请注意**

<asp:gridview id="CustomersGridView" 
    datasourceid="CustomersSqlDataSource" 
    autogeneratecolumns="false"
    autogenerateeditbutton="true"
    allowpaging="true" 
    datakeynames="CustomerID"  
    runat="server">

    <columns>
      <asp:templatefield>
         <itemtemplate> <%-- This is itemtemplate so they are visible by default --%>
            <asp:CheckBox ID="cbVerify" runat="server"></asp:CheckBox>
            <asp:HiddenField ID="hidID" runat="server" Value='<%# Bind("CustomerID") %>'></asp:HiddenField>
         </itemtemplate>
      </asp:templatefield>
      <asp:boundfield datafield="CustomerID" readonly="true" headertext="Customer ID"/>
      <asp:boundfield datafield="CompanyName" readonly="true" headertext="Customer Name"/>
      <asp:boundfield datafield="Address" headertext="Address"/>
      <asp:boundfield datafield="City" headertext="City"/>
      <asp:boundfield datafield="PostalCode" headertext="ZIP Code"/>
    </columns>
</asp:gridview>

<asp:Button ID="btSubmit" runat="server" OnClick="btSubmit_Click"></asp:Button>

处理此代码的代码

public void btSubmit_Click(object sender, EventArgs e)
{
  foreach (GridViewRow row in CustomersGridView.Rows) 
  {
    CheckBox cbVerify = (CheckBox)row.FindControl("cbVerify");
    HiddenField hidID = (HiddenField)row.FindControl("hidID");

    // Do your validation of the data here
    ..

    if (cbVerify != null)
    {
      // Add fields and update
      sqlRecord.UpdateParameters["ID"].DefaultValue = hidID.Value;
      sqlRecord.UpdateParameters["Valid"].DefaultValue = cbVerify.Checked.ToString();
      sqlRecord.Update();
    }
}

这应该让你朝着特定的方向前进。

答案 1 :(得分:1)

浏览数据网格并将要更新的所有数据存储在数组等中。 Sql server具有bit数据类型,如果复选框已关闭,您可以将其设置为0;如果是1,则可以将其设置为checked。收集完所有数据后,将其传递给数据层进行sql更新

您可以使用DataGrid对象迭代其单元格/控件。例如,使用嵌套循环可以执行以下操作:

myDG.Items[index1].Cells[index2].Controls[0]

编辑:这取决于您在列中的输入控件,因为您必须强制转换它们。假设你有一个包含10列的数据网格,除了最后一个列之外的所有列都有TextBox,也就是CheckBox,你会这样做:

CheckBox cb = null;
TextBox tb = null;
List<string> myList = new List<string>();
for(int row = 0; row < myDG.Items.Count; row++)
{
  for(int col = 0; col < myDG.Columns.Count; col++)
  {
    if(col < 9){
      tb = myDG.Items[row].Cells[col].Controls[0] as TextBox;
      myList.Add(tb.Text);
    }
    else{
      cb = myDG.Items[row].Cells[col].Controls[0] as CheckBox;
      myList.Add(((cb.Checked) ? "1" : "0"));
    }
  }
}

如果您也想要,可以使用2D数组/列表进行存储。 HTH