我有一个长期项目(到目前为止大约持续使用了 9 年),它在几个页面中使用了 gridviews。网格视图仅用于显示简短的摘要详细信息,每个都使用单独的编辑表单(在调用之前隐藏)。
我没有使用网格内编辑,因为编辑太复杂了。通过单独的添加按钮或行的编辑链接按钮(使用 a ButtonField
)调用和显示编辑表单。
这种方法在 .net 3.5 和包括 .net 3.5 之前已经运行了好几年。但是,在最近尝试将项目平台升级到 .net 4 之后,我发现网格在以下情况下进入了内联编辑模式:
- 点击gridview编辑链接按钮,然后
- 编辑表单被取消按钮或保存按钮方法关闭
直到实际编辑表单被关闭后,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>
有没有其他人遇到过这个问题?