FormView不会进入插入模式。为什么?

时间:2011-07-12 13:38:26

标签: c# .net asp.net formview

<asp:FormView ID="FormView1" runat="server" AllowPaging="True" 
        DataSourceID="SqlDataSource1" OnModeChanging="FormView1_ModeChanging">
        <EditItemTemplate>
            ID :
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <br />
            CpuName :
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <br />
            Status :
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        </EditItemTemplate>
        <EmptyDataTemplate>
            There is no data.
        </EmptyDataTemplate>
    <ItemTemplate>
     <table>
      <tr>
        <td align="right"><b>ID: </b></td>       
        <td><%# Eval("Id") %></td>
      </tr>
      <tr>
        <td align="right"><b>CPUName:</b></td>     
        <td><%# Eval("cpuname") %></td>
      </tr>
      <tr>
        <td align="right"><b>Status</b></td>      
        <td><%# Eval("status") %></td>
      </tr>

    </table>        
    <asp:LinkButton CommandName="Edit" runat="server">Edit</asp:LinkButton>
    <asp:LinkButton CommandName="Insert" runat="server">Insert</asp:LinkButton>
    </ItemTemplate>
    <InsertItemTemplate>
     <table>
      <tr>
        <td align="right"><b>ID: </b></td>       
        <td>
            <asp:TextBox ID="txtFVID" runat="server"></asp:TextBox></td>
      </tr>
      <tr>
        <td align="right"><b>CPUName:</b></td>     
        <td>
            <asp:TextBox ID="txtFVName" runat="server"></asp:TextBox></td>
      </tr>
      <tr>
        <td align="right"><b>Status</b></td>      
        <td>
            <asp:TextBox ID="txtFVStatus" runat="server"></asp:TextBox></td>
      </tr>

    </table>        

    </InsertItemTemplate>
    </asp:FormView>

protected void FormView1_ModeChanging(object sender, FormViewModeEventArgs e)
    {
            if (e.NewMode == FormViewMode.Edit)
            {
                FormView1.ChangeMode(FormViewMode.Edit);
            }
            if (e.NewMode == FormViewMode.Insert)
            {
                FormView1.ChangeMode(FormViewMode.Insert);
            }

    }

我收到以下错误: - FormView“FormView1”必须处于插入模式才能插入新记录。

3 个答案:

答案 0 :(得分:7)

添加

<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" 
                CommandName="New" Text="New" />

进入<ItemTemplate>

移动你的

<asp:LinkButton CommandName="Insert" runat="server">Insert</asp:LinkButton>
    </ItemTemplate>

<InsertItemTemplate>所属的地方。

答案 1 :(得分:2)

您可以在ItemCommand事件中执行此操作,例如......

protected void FormView1_ItemCommand(object sender, FormViewCommandEventArgs e)
{
       if (e.CommandName == "Edit")
        {
            FormView1.ChangeMode(FormViewMode.Edit);
        }
       else if (e.CommandName == "Insert")
        {
            FormView1.ChangeMode(FormViewMode.Insert);
        }
}

答案 2 :(得分:0)

要将CommandName更改为插入模式的FormView为“新”,而不是“插入”。 “插入”CommandName用于在插入模式下执行数据源控件的实际Insert方法。

尝试:

<asp:LinkButton CommandName="New" runat="server">New</asp:LinkButton>