【问题标题】:How to go to Edit Mode in FormView?如何在 FormView 中进入编辑模式?
【发布时间】:2011-04-20 07:29:47
【问题描述】:

我有 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 会刷新并保持只读状态。我做错了什么?

【问题讨论】:

    标签: c# .net asp.net formview


    【解决方案1】:

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

    fvReport.ChangeMode(DetailsViewMode.Edit);
    

    【讨论】:

    • 谢谢,结果我和你一样)但我认为如果 CommandName 设置为“编辑”,FormView 会自动进入编辑模式。 See MSDN
    【解决方案2】:

    我通常用来从 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);
        }
    }
    

    【讨论】:

      【解决方案3】:

      您的FormView 没有切换可能还有其他原因。它通常归结为格式错误的 HTML。您的设计师有时会通过显示类似这样的内容来告诉您格式错误的部分...

      在您没有收到此明显消息的情况下,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?这就是我过去的命令处理失败的地方。

      【讨论】:

        猜你喜欢
        • 2010-09-20
        • 2011-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多