【发布时间】: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" />移动到您想要的任何列。