0

好的,所以我正在努力使用 asp:formview。

我已经启动并运行了表单视图,并且添加了“编辑”按钮。

<asp:FormView runat="server" id="fwHotelDetails" DataKeyNames="id" OnDataBound="fwHotelDetails_DataBound" OnModeChanging="fwHotelDetails_ModeChanging" >
    <ItemTemplate>
        // (..) some code here which outputs some data

        <asp:Repeater runat="server" id="repScore">
          <ItemTemplate>
            <span class="item"> Some output here</span>
            <asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit" />
          </ItemTemplate>
        </asp:Repeater>

        <EditItemTemplate>
             Test test, anything??
        </EditItemTemplate>

    </ItemTemplate>
</asp:FormView>

我在后面的代码中尝试了以下解决方案 - 它们都不起作用:

protected void fwHotelDetails_ItemCommand(object sender, FormViewModeEventArgs e)
{
    if (e.CommandName.Equals("Edit"))
    {
        fwHotelDetails.ChangeMode(e.NewMode);
    }
}

和这个:

protected void fwHotelDetails_ModeChanging(object sender, System.Web.UI.WebControls.DetailsViewModeEventArgs e)
{
    fwHotelDetails.ChangeMode((FormViewMode)e.NewMode);
}

单击编辑按钮只会给我以下错误消息:

FormView 'fwHotelDetails' 触发了未处理的事件 ModeChanging

还需要做什么?

此页面是 FormView 控制器的一个很好的参考:http: //authors.aspalliance.com/aspxtreme/sys/web/ui/webcontrols/FormViewClass.aspx

更新:我更新了代码以反映 Phaedrus 的建议。当前状态是即使在单击“编辑”按钮后,仍会加载 ItemTemplate 中的内容。

4

2 回答 2

3

您必须指定处理ModeChanging事件的方法。当 FormView 控件尝试在编辑、插入和只读模式之间切换时引发此事件,但在模式实际更改之前。

<asp:FormView OnModeChanging="fwHotelDetails_ModeChanging" />

方法签名的第二个参数是“DetailsViewModeEventArgs”,它应该是“FormViewModeEventArgs”。

void fwHotelDetails_ModeChanging(Object sender, FormViewModeEventArgs e)
{
}
于 2009-09-18T13:04:32.383 回答
0

只需在 formview 中编写代码即可Item_Command

protected void formview_ItemCommand(object sender, FormViewCommandEventArgs e)

        {

            if (e.CommandName == "Edit")
            {
                formview.DefaultMode = FormViewMode.Edit;
                formview.DataBind();
            }
            if (e.CommandName == "Cancel")
            {
                formview.DefaultMode = FormViewMode.ReadOnly;
                formview.DataBind();
            }

        }
于 2014-03-11T06:34:12.637 回答