Как перейти в режим редактирования в FormView? - PullRequest
9 голосов
/ 20 апреля 2011

У меня есть FormView:

<asp:FormView ID="fvReport" runat="server" DefaultMode="ReadOnly" AllowPaging="false" OnModeChanging="fvReport_ModeChanging" DataKeyNames="id">

protected void fvReport_ModeChanging(Object sender, FormViewModeEventArgs e)
    {
        switch (e.NewMode)
        {
            case FormViewMode.Edit:
                fvReport.AllowPaging = false;
                break;
        }
    }

в ItemTamplate я поставил LinkButton:

<asp:LinkButton ID="lbEdit" runat="server" CausesValidation="true" CommandName="Edit" CommandArgument='<%# Eval("id") %>'>Редактировать</asp:LinkButton>

Конечно, FormView имеет раздел EditItemTemplate.

Когда я нажимаю кнопку, FormView обновляется и остается в ReadOnly. Что я делаю не так?

Ответы [ 3 ]

13 голосов
/ 20 апреля 2011

Вы должны вызвать метод ChangeMode FormView и перейти в режим

fvReport.ChangeMode(DetailsViewMode.Edit);
0 голосов
/ 18 мая 2018

Могут быть и другие причины, по которым ваш FormView не переключается.Обычно это плохо отформатированный HTML.Ваш дизайнер иногда сообщает вам о неправильно сформированных секциях, отображая что-то вроде этого ...

enter image description here

В тех случаях, когда вы не получаете это очевидное сообщениеFormView не переключение обычно сводится к чему-то менее очевидному, например, к плохим атрибутам AssociatedControlId.Я бы порекомендовал посмотреть на вас ярлыки, валидаторы и все, что связано с элементом управления.Что-то такое маленькое, как это ...

<asp:Label runat="server"
    ID="labelAccessGrantedBy"
    Text="Access Granted By"
    AssociatedControlID="textAccessGranted" />
<asp:TextBox runat="server"
    ID="textAccessGrantedBy"
    CssClass="wmioSmall wFull"
    Text='<%# Bind("access_granted_by") %>' />

Заметили преднамеренное использование textAccessGranted выше, а не фактическое textAccessGrantedBy TextBox?Вот где раньше мне не удавалось обработать команду.

0 голосов
/ 16 сентября 2014

Другой вариант, который я обычно использую для перехода в режим редактирования из formView, - это добавление и определение элемента EditItemTemplate. Это значительно упрощает редактирование приложения.

В вашем FormView вам может потребоваться изменить DefaultMode на Edit. Также в вашем коде попробуйте:

protected void fvReport_ModeChanging(Object sender, FormViewModeEventArgs e)
{

}

protected void lbEdit_Click(object sender, EventArgs e)
{
    LinkButton lbEdit = (LinkButton)fvReport.FindControl("lbEdit");

    if (sender == lbEdit)
    {
        fvReport.DataBind();
        fvReport.ChangeMode(FormViewMode.Edit);
    }
}
...