.NET Framework 4.5在GridView上加载默认编辑模板?

时间:2014-02-10 04:53:33

标签: c# asp.net .net .net-4.5

我创建了一个带编辑功能的网格视图。在单击gridview行编辑图像时,它使自定义编辑面板可见,用户可以编辑和保存gridview行数据,或者他/她可以单击取消按钮而不进行任何更新。它与.NET framwork 2.0.

完美搭配

但问题在于.NET framework 4.5 -

  

当用户点击取消或保存按钮时,而不是加载   普通gridview,它会加载默认的编辑模板   用户之前点击过的gridview行。

那么,我该如何解决这个问题呢?这发生在我们的ASP.NET网站中使用的所有Gridview中。

这是原始的Gridview行:Original GridRow

enter image description here

以下是带保存/取消的自定义修改面板:Custom Edit Panel

enter image description here

这是错误:Default Template loaded

enter image description here

1 个答案:

答案 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

正如您所看到的,我通过清除其默认控件然后更改单元格的列范围以适合我的自定义编辑面板来覆盖默认编辑项模板。还有隐藏我想要隐藏的单元格。