我有一个数据网格,每行都有一个复选框。每行中的每个字段都可以更新
用户可以更新多行并选中任何复选框。
单击SUBMIT按钮,应更新所有数据。我需要复选框来更新数据库中的布尔值(或者sql服务器的bool类型)。
答案 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