2011-04-20 75 views
8

我有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我把LinkBut​​ton的:

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

当然,FormView控件具有EditItemTemplate模板部分。

当我点击Button时,FormView被刷新并保持在ReadOnly中。我究竟做错了什么?

回答

13

你必须调用FormView控件的ChangeMode方法,并传递模式

fvReport.ChangeMode(DetailsViewMode.Edit); 
+1

感谢,在结果我没有你),但我认为FormView控件进入编辑模式,如果自动设置的CommandName“编辑”。 [请参阅MSDN](http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.formviewmodeeventargs%28v=VS.90%29.aspx) – DmitryB 2011-04-21 05:31:08

0

,我通常使用进入编辑模式,从一个FormView是添加并定义EditItemTemplate中元素的另一种选择。这使得您的应用程序可编辑变得更容易。

在您的formView中,您可能需要将DefaultMode更改为编辑。此外,在后面的尝试代码:

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