我有一个detailsview,我从会员配置文件中获得一对数据,我在detailsview上显示它…
<ItemTemplate>
<asp:label ID="FirstName" runat="server" />
</ItemTemplate>
但是当我点击编辑按钮时,什么也没有显示在字段上。这就是我在编辑模板上所做的:
我这样调用ItemUpdating:
protected void DetailsView1_ItemUpdating(Object sender, DetailsViewUpdateEventArgs e)
{
//I get my memberprofle here
MemberProfile memberp = MemberProfile.GetuserProfile(data);
MembershipUser myuser = Membership.GetUser()
Label labelfName = DetailsView1.FindControl("FirstName") as Label;
labelfName.Text = memberp.fName;
}
我应该用Itemupdated代替吗?或者当编辑按钮被点击时,我应该调用另一个方法来填充edit上的firstname字段?此外,我在编辑模式下将其保持为"LABEL"(通常是文本框)的原因是该字段必须是只读的。
当您进入编辑模式时,事件ItemUpdating不会被触发。必须使用DataBound事件来设置所需的文本值。
如果有必要,你可以询问DetailsView的CurrentMode属性来知道你是在编辑还是在显示。
结果如下:
protected void DetailsView1_DataBound(object sender, EventArgs e)
{
Label l = DetailsView1.FindControl("FirstName") as Label;
if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
{
//obtained from your sample
MemberProfile memberp = MemberProfile.GetuserProfile(data);
MembershipUser myuser = Membership.GetUser()
l.Text = memberp.fName;
}
else
{
l.Text = "Another text or nothing";
}
}
一定要在Detailsview1控件中定义DataBound事件。
REMARK:受数据绑定模式影响。如果有,请告诉我并举例说明
添加RowUpdating和RowEditing事件到gridview。
http://www.aspdotnet-suresh.com/2011/02/how-to-inserteditupdate-and-delete-data.html