首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多重编辑/保存网格(hiddenfield + javascript)

多重编辑/保存网格(hiddenfield + javascript)
EN

Stack Overflow用户
提问于 2012-02-03 20:47:40
回答 1查看 403关注 0票数 0

我得到了一个包含10行的网格视图,其中一列是可以编辑的组合框。当我点击“编辑”按钮时,所有的10行都变成可编辑的,我想要跟踪我更改了哪些行,这样如果只对其中2行进行了更改,我就不会将所有10行都保存到数据库中。到目前为止,我想说的是:

在组合框的SelectedIndexChanged上的网格中创建一个额外的隐藏列(就像一个复选框,用于指示行已被编辑)。我将找到一个脚本,该脚本告诉我当前正在编辑的网格行,并在隐藏列中为该行设置复选标记。

然后,当我按下" save“时,我可以遍历网格的各行,查看哪些行具有复选标记,然后将这些行保存到数据库中

Javascript不是我的强项,因此任何帮助/提示都将不胜感激,或者一个完全不同的解决方案也可以工作:)

EN

回答 1

Stack Overflow用户

发布于 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 + "');")

代码语言:javascript
复制
<script type="text/javascript">
function Test(hiddenField) {
    var test = document.getElementById(hiddenField)
        test.value = "1"
}
</script>

最后,我可以遍历网格的各行,看看哪些行发生了变化:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9136797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档