0

我有一个长期项目(到目前为止大约持续使用了 9 年),它在几个页面中使用了 gridviews。网格视图仅用于显示简短的摘要详细信息,每个都使用单独的编辑表单(在调用之前隐藏)。

我没有使用网格内编辑,因为编辑太复杂了。通过单独的添加按钮或行的编辑链接按钮(使用 a ButtonField)调用和显示编辑表单。

这种方法在 .net 3.5 和包括 .net 3.5 之前已经运行了好几年。但是,在最近尝试将项目平台升级到 .net 4 之后,我发现网格在以下情况下进入了内联编辑模式:

  1. 点击gridview编辑链接按钮,然后
  2. 编辑表单被取消按钮或保存按钮方法关闭

直到实际编辑表单被关闭后,gridview 才会进入编辑模式。如果调用了Save方法,则涉及到 gridview 的完全重新绑定,但它仍然进入编辑模式!

我尝试将网格的 EditIndex 设置为 -1,但这没有任何区别。

如果我将编译目标重新设置为 3.5,网格将再次按预期运行。对于最初作为 .net 4 项目开始的项目,我没有这个问题。

部分用户界面代码:

<asp:Button ID="cmdAdd" runat="server" Text=" Add " />
<asp:GridView ID="gvWPHA" runat="server" AutoGenerateColumns="false" 
DataKeyNames="PORLID" AllowSorting="false"
EmptyDataText="No records yet" EmptyDataRowStyle-CssClass="qansYes">
<HeaderStyle CssClass="gvhead" />
<RowStyle CssClass="TRPrime" />
<AlternatingRowStyle CssClass="TRAlt" />
<SelectedRowStyle CssClass="TRSelect" />
<Columns>
    <asp:ButtonField ButtonType="Link" Text="Edit" CommandName="Edit" />
    <asp:BoundField DataField="PORLID" HeaderText="Record #" />
    <asp:BoundField DataField="DateOfAppt" SortExpression="DateOfAppt" HeaderText="Appt Date" DataFormatString="{0:dd/MM/yyyy}" />
    <asp:BoundField DataField="OutcomeDesc" HeaderText="Outcome" />
    <asp:ButtonField ButtonType="Link" Text="Delete" CommandName="Delete" />
      </Columns>
</asp:GridView>


<asp:UpdatePanel ID="upEdit" runat="server">
 <ContentTemplate>
   ... Editing Form markup and validation, cancel button, save button, etc ...
 </ContentTemplate>
</asp:UpdatePanel>

有没有其他人遇到过这个问题?

4

1 回答 1

1

.NET 4.0 中 GridView 的行为发生了变化。Microsoft Connect 错误报告在这里: https ://connect.microsoft.com/VisualStudio/feedback/details/554166/gridview-sets-editindex-property-when-in-previous-net-versions-it-didnt

于 2012-02-25T01:32:00.070 回答