получить значение для edititemtemplate из кода программной части

У меня есть подробное представление, где я получаю пару данных из профиля членства и отображаю его в подробном представлении... это отлично работает:

 <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» (обычно это будет текстовое поле) в режиме редактирования, заключается в том, что это поле должно быть доступно только для чтения.


person EagleFox    schedule 14.01.2013    source источник
comment
это событие DetailsView1_ItemUpdating срабатывает, когда вы редактируете?   -  person Kiran1016    schedule 23.01.2013


Ответы (2)


Событие ItemUpdating не запускается при входе в режим редактирования. Вы должны использовать событие DataBound, чтобы правильно установить требуемое текстовое значение.

Если необходимо, вы можете запросить свойство CurrentMode DetailsView, чтобы узнать, редактируете вы или отображаете.

Результат выглядит следующим образом:

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";
    }
 }

Обязательно определите событие DataBound в элементе управления Detailsview1.

ПРИМЕЧАНИЕ. На это может повлиять режим привязки данных. Если да, дайте мне знать и привести пример.

person Hybos    schedule 23.01.2013

Добавьте событие RowUpdating и RowEditing в свой вид сетки.

http://www.aspdotnet-suresh.com/2011/02/how-to-inserteditupdate-and-delete-data.html

person rach    schedule 14.01.2013
comment
привет... спасибо.. я использую detailsview.... что будет эквивалентно для detailsview... это то же самое? - person EagleFox; 14.01.2013
comment
не уверен, но события разные. пожалуйста, обратитесь к ссылке ниже. Надеюсь, это поможет вам stackoverflow.com/questions/1992660/ - person rach; 14.01.2013
comment
да... он определен... У меня есть другой оператор if, который загружает раскрывающийся список и работает нормально... так что я знаю, что он вызывает этот метод - person EagleFox; 15.01.2013