2012-02-03 53 views
0

我得到了一個gridview,其中包含10行,其中1列是可編輯的組合框。當我點擊一個「編輯」按鈕時,所有10行都變爲可編輯的,我想跟蹤哪些行已經改變,這樣我就不會將所有10行保存到數據庫,如果只有更改了2他們。我到目前爲止的壁紙:多編輯/保存網格(hiddenfield + javascript)

在網格中創建一個額外的隱藏列(如指示該行被編輯的複選框) 在組合框im上的SelectedIndexChanged將去查找腳本,該腳本告訴我當前的網格行im編輯和設置在隱藏列勾選該行

然後當我按下「保存」我可以通過網格線運行,看看哪些有對勾,然後將這些行保存到數據庫

JavaScript是不是我的強大的一面,所以任何幫助/提示將不勝感激,或完全不同的解決方案將工作:)

回答

0

我的解決辦法: 增加了 <input type="hidden" id="hdnIsChanged" runat="server" /> 網格的ItemTemplate中

然後在上的RowDataBound網格我發現hiddenField
Dim hdnField As HtmlInputHidden = DirectCast(e.Row.FindControl("hdnIsChanged"), HtmlInputHidden)

和下拉列表
Dim ddlTest As DropDownList = CType(e.Row.FindControl("ddlTest"), DropDownList) ddlTest.Attributes.Add("onChange", "Test('" + hdnField.ClientID + "');")

<script type="text/javascript"> 
function Test(hiddenField) { 
    var test = document.getElementById(hiddenField) 
     test.value = "1" 
} 
</script> 

最後,我可以穿過網格的行,看看哪些已經改變:

For Each r As GridViewRow In gvTest.Rows 
    Dim hdnField As HtmlInputHidden = DirectCast(r.FindControl("hdnIsChanged"), HtmlInputHidden) 

    If hdnField.Value = "1" Then 
     // do updates 
     End If 
Next