如何在FormView中进入编辑模式?

时间:2011-04-20 07:29:48

标签: c# .net asp.net 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状态。我做错了什么?

3 个答案:

答案 0 :(得分:13)

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

fvReport.ChangeMode(DetailsViewMode.Edit);

答案 1 :(得分: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);
    }
}

答案 2 :(得分:0)

可能还有其他原因导致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?这就是过去命令处理失败的地方。