从代码隐藏获取编辑模板上的值

本文关键字:编辑 代码 隐藏 获取 | 更新日期: 2023-09-27 17:52:54

我有一个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