我创建了一个带编辑功能的网格视图。在单击gridview行编辑图像时,它使自定义编辑面板可见,用户可以编辑和保存gridview行数据,或者他/她可以单击取消按钮而不进行任何更新。它与.NET framwork 2.0.
但问题在于.NET framework 4.5
-
当用户点击取消或保存按钮时,而不是加载 普通gridview,它会加载默认的编辑模板 用户之前点击过的gridview行。
那么,我该如何解决这个问题呢?这发生在我们的ASP.NET网站中使用的所有Gridview中。
这是原始的Gridview行:Original GridRow
以下是带保存/取消的自定义修改面板:Custom Edit Panel
答案 0 :(得分:0)
我通常会在行数据绑定事件中实现您想要做的事情。
尝试像这样设置网格视图
<asp:Gridview id="ClientManagementGridView runat="server"/>
<columns>
<asp:TemplateField>
<itemtemplate>
//put edit button here
</itemtemplate>
<edititemtemplate>
// put your update and cancel buttons here
</edititemtemplate>
</asp:Templatefield>
<asp:templatefield>
<itemtemplate>
<aspTextBox Text='<#Eval("ClientId") %>' runat="server" />
</itemtemplate>
<edititemtemplate>
<asp:Panel id="EditPanel">
//your panel contents
</asp:Panel>
</edititemtemplate>
</asp:templateField>
<asp:BoundField DataField="ClientName" HeaderText="Name" />
<asp:BoundField DataField="Address" HeaderText="Name" />
</columns>
<asp:GridView>
现在你的gridview数据绑定事件中放入了这段神奇的代码
If e.Row.RowState.ToString().Contains("Edit") Then
Dim editGrid As GridView = TryCast(sender, GridView)
Dim colSpan As Integer = editGrid.Columns.Count
e.Row.Cells(0).Visible = True
e.Row.Cells(1).Visible = True
For i As Integer = 2 To colSpan - 1
e.Row.Cells(i).Visible = False
e.Row.Cells(i).Controls.Clear()
Next
e.Row.Cells(1).Attributes("ColSpan") = (colSpan).ToString()
End if
正如您所看到的,我通过清除其默认控件然后更改单元格的列范围以适合我的自定义编辑面板来覆盖默认编辑项模板。还有隐藏我想要隐藏的单元格。