我有一個數據網格,每一行都有一個複選框。也可以更新每一行中的每個字段更新數據庫與複選框
用戶可以更新多個行並檢查任何複選框。
點擊SUBMIT按鈕應該更新所有的數據。我需要複選框來更新數據庫中的布爾值(或者sql服務器的布爾類型)。
- 如何實現複選框以便能夠更新數據庫中的表?
- 點擊提交按鈕我如何獲取所有數據進行更新?
我有一個數據網格,每一行都有一個複選框。也可以更新每一行中的每個字段更新數據庫與複選框
用戶可以更新多個行並檢查任何複選框。
點擊SUBMIT按鈕應該更新所有的數據。我需要複選框來更新數據庫中的布爾值(或者sql服務器的布爾類型)。
通過數據網格並存儲您想要更新數組或類似的所有數據。 Sql服務器有一個bit
數據類型,您可以將其設置爲0
(如果該複選框關閉)或1
(如果它是checked
)。一旦你收集所有的數據傳遞到你的數據層的SQL更新
您可以使用DataGrid
對象遍歷其單元格/控件。例如,使用嵌套循環,你可以這樣做:
myDG.Items[index1].Cells[index2].Controls[0]
編輯:這取決於輸入控件,你必須在列,因爲你要投他們。假設你有除了最後,這是複選框10列和文本框中的所有列DataGrid中,你會怎麼做:
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"));
}
}
}
你可以使用一個二維數組/列表保存,如果你想太多。 HTH
如果您使用的是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();
}
}
這應該讓你在一個特定的方向看。
非常感謝你的大力幫助隱藏領域的目的是什麼? –
隱藏字段可以更簡單地獲取記錄的ID,以便您可以更新它。這是必須的,因爲你可以使用** row **對象來獲得密鑰,但它只是更容易。 – Kirk
你能告訴我怎麼會通過這個 –
確定。看看我的編輯 –
對不起,但你能給一個aspx html代碼的例子以及 –