我有一个asp.net表格。
它从SQL Server表中加载包含30列和数据的网格视图。
目前,我可以双击以编辑任何行。 在编辑过程中,我可以按Tab键移到下一列。
但我必须一直向右滚动或滚动,然后单击更新以确认udpdate。
我想发生的是,当我点击“ 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#中,如果需要,我会弄脏我的手。
答案 0 :(得分:1)
我只是在玩gridview。当显示更新和取消按钮时,您可以查看html源。
这是我在编辑第一行时得到的:
GQLMission
这是我在编辑第二行时得到的:
<a href="javascript:__doPostBack('ctl00$MainContent$GridView1$ctl02$ctl00','')">Update</a>
如果您可以确定正在编辑的行,则可以使用页面上的纯JavaScript来完成此操作,只需复制注入到网格中的js。
第一行是<a href="javascript:__doPostBack('ctl00$MainContent$GridView1$ctl03$ctl00','')">Update</a>
;在第二行中是ctl02
。我的网格上有一个标题,这可能是为什么控件从2开始的原因。
您也许可以执行一个循环,看看是否存在控件。仅当单击更新后,更新按钮的html-with-javascript才会存在。
高度。
答案 1 :(得分:0)
感谢您的时间和精力来回应我。多亏了您的确认,在确认修改之前,我需要知道自己在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,我将您的答案标记为答案,因为它可以帮助我解决问题。