我正在使用Visual Studio 2010,VB.NET,目标框架.NET 4.0。当EditIndex设置在RowEditing上时,GridView不会更改为编辑模式
我有一个GridView,我绑定到一些对象集合,CommandField列应该允许编辑选定的行。
我在RowEditing eventhandler中正确设置EditIndex属性。
问题是:当我单击生成的“编辑”链接时,显然没有发生任何事情,该行在“查看模式”中再次呈现,而不是“编辑模式”。
但是,如果我做一些随机回发,就像点击我的“doNothing”按钮,该行就会在下一个回传中以“编辑模式”呈现。
我已成功地复制下面的代码的问题:
ASPX:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="MyForm.aspx.vb" Inherits="MySandBox.MyForm" %>
<%@ Register Src="MyControl.ascx" TagName="MyControl" TagPrefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="gvInfrator" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:CommandField ShowEditButton="true" />
<asp:BoundField HeaderText="MyField" DataField="MyField" />
</Columns>
</asp:GridView>
<asp:Button ID="btnDoNothing" runat="server" Text="Just do a postback" />
</form>
</body>
</html>
代码背后:
Public Class MyDto
Public Property MyField As String
End Class
Public Class MyForm
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.BindMyData()
End Sub
Private Sub BindMyData()
Dim myData As New MyDto
myData.MyField = "My field value"
Me.gvInfrator.DataSource = New MyDto() {myData}
Me.gvInfrator.DataBind()
End Sub
Protected Sub gvInfrator_RowEditing(sender As Object, e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles gvInfrator.RowEditing
Me.BindMyData()
Me.gvInfrator.EditIndex = e.NewEditIndex
End Sub
End Class
难道我做错了什么?这是.NET Framework 4中的错误吗?有什么解决方法吗?
为您的数据绑定_设置'EditIndex'后。 – 2014-10-30 13:09:34