我得到了一个包含10行的网格视图,其中一列是可以编辑的组合框。当我点击“编辑”按钮时,所有的10行都变成可编辑的,我想要跟踪我更改了哪些行,这样如果只对其中2行进行了更改,我就不会将所有10行都保存到数据库中。到目前为止,我想说的是:
在组合框的SelectedIndexChanged上的网格中创建一个额外的隐藏列(就像一个复选框,用于指示行已被编辑)。我将找到一个脚本,该脚本告诉我当前正在编辑的网格行,并在隐藏列中为该行设置复选标记。
然后,当我按下" save“时,我可以遍历网格的各行,查看哪些行具有复选标记,然后将这些行保存到数据库中
Javascript不是我的强项,因此任何帮助/提示都将不胜感激,或者一个完全不同的解决方案也可以工作:)
发布于 2012-02-05 00:43:23
我的解决方案:在网格的ItemTemplate中添加一个<input type="hidden" id="hdnIsChanged" runat="server" />
然后在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
Nexthttps://stackoverflow.com/questions/9136797
复制相似问题