在编辑模式下更新Gridview

时间:2019-10-16 13:10:18

标签: html asp.net vb.net

我有一个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#中,如果需要,我会弄脏我的手。

2 个答案:

答案 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,我将您的答案标记为答案,因为它可以帮助我解决问题。

相关问题