【问题标题】:Update Gridview when in Edit mode在编辑模式下更新 Gridview
【发布时间】:2020-02-13 06:48:57
【问题描述】:

我有一个 asp.net 表单。

它从一个 sql server 表中加载一个包含 30 列和数据的网格视图。

目前我可以双击编辑任何行。 我可以在编辑期间按 Tab 键移动到下一列。

但我必须一直滚动或按 Tab 一直向右,然后单击更新以确认更新日期。

我想要发生的是当我点击“Enter/return”时,要更新整行(在数据库中更新)。

在我的 OnRowDatabound 代码中,我有以下内容(如果完全不正确,请随时提供建议)

     Protected Sub OnRowDataBound(sender As Object, e As GridViewRowEventArgs)
        e.Row.Attributes("style") = "cursor:pointer"
        e.Row.Attributes("ondblclick") = Page.ClientScript.GetPostBackClientHyperlink(GridView1, "Edit$" & e.Row.RowIndex)
'following code blatently stolen from the web and converted to vb.net and attenmpte to solve the javascript element
        If (e.Row.RowState = DataControlRowState.Edit) OrElse (e.Row.RowState = (DataControlRowState.Edit Or DataControlRowState.Alternate)) Then
            e.Row.Cells(0).Width = Unit.Pixel(35)
            e.Row.Attributes.Add("onkeypress", "javascript:if (event.keyCode == 13) { __doPostBack('" & "Update$" + GridView1.EditIndex.ToString() & "'); return false; }")
     End If
     End Sub

我对 javascript 的了解不足,无法在 if 语句的最后一行看到我哪里出错了。

我也可能一厢情愿地认为这将提供我想要的解决方案。 gridview 周围的所有 asp.net 解决方案似乎都在 C# 中,如果需要,我会亲自动手。

【问题讨论】:

  • __doPostBack的第一个arg应该是控件;第二个参数是您需要添加的任何其他内容。我不记得它的内部结构,但这可能很困难,因为没有任何更改,每个按钮都知道它所在的行。获取单个操作 (Enter) 以了解要处理的行是......不确定它是否可能。我认为这可能以前被问过。确保您也在线搜索。
  • 您可以做的一件事是移动编辑按钮。进入标记并将<asp:CommandField ShowEditButton="True" /> 移动到您想要的任何列。

标签: html asp.net vb.net


【解决方案1】:

感谢您花时间和精力回复我。感谢您确定我需要知道我在 gridview 中的位置,然后才能确认编辑,这让我检查了我的代码。

从这里我重新检查了一些我用作指南的 c# 代码(但希望它在 vb.net 中)。

这是我的解决方案

Protected Sub OnRowDataBound(sender As Object, e As GridViewRowEventArgs)
        e.Row.Attributes("style") = "cursor:pointer"
        e.Row.Attributes("ondblclick") = Page.ClientScript.GetPostBackClientHyperlink(GridView1, "Edit$" & e.Row.RowIndex)

        Dim js As String = "javascript:if (event.keyCode == 13) { __doPostBack('" + GridView1.UniqueID + "', 'Update$" + e.Row.RowIndex.ToString() + "'); return false; }"
        e.Row.Attributes.Add("onkeydown", js)

End Sub

javascript 元素中缺少Gridview1.UniqueID

我已经对此进行了测试,并且可以正常工作。

再次感谢@Wazz,我将您的答案标记为答案,因为它帮助我解决了我的问题。

【讨论】:

    【解决方案2】:

    我只是在玩gridview。当显示更新和取消按钮时,您可以查看 html 源代码。

    这是我在编辑第一行时得到的:

    <a href="javascript:__doPostBack('ctl00$MainContent$GridView1$ctl02$ctl00','')">Update</a>
    

    这是我在编辑第二行时得到的:

    <a href="javascript:__doPostBack('ctl00$MainContent$GridView1$ctl03$ctl00','')">Update</a>
    

    如果你能弄清楚哪一行正在被编辑,看起来你可以在页面上使用普通的 javascript 来做到这一点,只需复制注入到网格中的 js。

    第一行是ctl02;第二行是ctl03。我的网格上有一个标题,这可能是控件从 2 开始的原因。

    您也许可以只做一个循环并查看控件是否存在。更新按钮的 html-with-javascript 只有在点击更新时才会存在。

    Hth.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      相关资源
      最近更新 更多