如何进入FormView的编辑模式?

8

我有一个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;
        }
    }

在ItemTemplate中,我放置了一个LinkButton:
<asp:LinkButton ID="lbEdit" runat="server" CausesValidation="true" CommandName="Edit" CommandArgument='<%# Eval("id") %>'>Редактировать</asp:LinkButton>

当然,FormView有EditItemTemplate部分。

当我点击按钮时,FormView会刷新并保持为只读状态。我做错了什么?

3个回答

13

你需要调用FormView的ChangeMode方法并传递模式参数

fvReport.ChangeMode(DetailsViewMode.Edit);

2
谢谢,我按照你的建议操作了。但是我认为如果CommandName设置为“Edit”,FormView会自动进入编辑模式。请参阅MSDN - DmitryB

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

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,而不是实际的textAccessGrantedByTextBox?这就是我过去在命令处理方面失败的地方。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接