从代码后台获取编辑模板中的值

4

我有一个详细视图,在那里我从会员资料中获取了一些数据,并在详细视图上显示它...这很好用:

 <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吗?或者当编辑按钮被点击时,我应该调用另一个方法来填充名字字段吗?此外,我将其保留为“LABEL”(通常是文本框)的原因是在编辑模式下,该字段必须是只读的。

当您正在编辑时,DetailsView1_ItemUpdating事件是否正在触发? - Kiran1016
2个回答

1

当您进入编辑模式时,事件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事件。
备注:这可能会受到数据绑定模式的影响。如果是这样,请告诉我并提供一个示例。

0

嗨...谢谢..我正在使用DetailsView控件....相应的中文控件是什么呢?它与DetailsView相同吗? - EagleFox
不确定,但事件是不同的。请参考下面的链接。希望能帮到你。http://stackoverflow.com/questions/1992660/how-to-modify-input-data-in-itemupdating-event-of-detailsview - rach
是的...它已经被定义了...我有另一个if语句,用于加载下拉列表,它工作得很好...所以我知道它正在调用那个方法。 - EagleFox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接