FormView не входит в режим вставки. Зачем? - PullRequest
2 голосов
/ 12 июля 2011
<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 ]

7 голосов
/ 12 июля 2011

Добавьте

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

в ваш <ItemTemplate>.

и переместите

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

в <InsertItemTemplate>, где он принадлежит.

2 голосов
/ 12 июля 2011

Вы можете сделать это в 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);
        }
}
0 голосов
/ 12 июля 2011

CommandName для изменения FormView на режим вставки - «Новый», а не «Вставка». CommandName «Вставка» предназначена для выполнения фактического метода вставки элемента управления источником данных в режиме вставки.

Попытка:

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