Как перейти в режим редактирования в FormView?
У меня есть 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 обновляется и остается только для чтения. Что я делаю не так?
3 ответов
вы должны вызвать метод ChangeMode FormView и передать mode
fvReport.ChangeMode(DetailsViewMode.Edit);
другой вариант, который я обычно использую для перехода в режим редактирования из formView, - это добавить и определить элемент EditItemTemplate. Это значительно упрощает редактирование приложения.
в вашем formView вам может потребоваться изменить свой DefaultMode
редактировать. Также в вашем коде за try:
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);
}
}
могут быть и другие причины, почему ваш FormView
не переключение. Обычно это плохо отформатированный HTML. Ваш дизайнер иногда говорит вам о деформированных разделах, отображая что-то вроде этого...
в тех случаях, когда вы не получаете этот очевидный сообщения FormView
не переключение обычно сводится к чему-то менее очевидному, например bad 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
? Вот где обработка команд не удалась для меня в прошлом.