2011-10-04 52 views
4

我想用一个FormView连接到我的SQL数据库,我按照指南,但在指南上说,如果我在ItemTemplate应该有一个“新“按钮超链接进入InsertItemTemplate,我面临的问题是该按钮不存在。我将如何进入插入模式,以便可以将新记录添加到我的SQL数据库中?实际将项目添加到数据库中的语法是什么?感谢您的帮助FormView插入一个新行C#和ASP.NET

<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

     <asp:GridView ID="GridView1" runat="server" AllowSorting="True" 
      AutoGenerateColumns="False" AutoGenerateDeleteButton="True" 
      AutoGenerateEditButton="True" CellPadding="4" DataSourceID="SqlDataSource1" 
      EmptyDataText="There are no data records to display." ForeColor="#333333" 
      Height="250px" Width="957px"> 
      <AlternatingRowStyle BackColor="White" /> 
      <Columns> 
       <asp:CommandField ShowSelectButton="True" /> 
       <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" 
        SortExpression="ID" /> 
       <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> 
       <asp:BoundField DataField="Description" HeaderText="Description" 
        SortExpression="Description" /> 
       <asp:BoundField ApplyFormatInEditMode="True" DataField="Date_Added" 
        DataFormatString="{0:MMM d, yyyy}" HeaderText="Date_Added" HtmlEncode="False" 
        SortExpression="Date_Added" /> 
      </Columns> 
      <EditRowStyle BackColor="#2461BF" /> 
      <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
      <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
      <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
      <RowStyle BackColor="#EFF3FB" /> 
      <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
      <SortedAscendingCellStyle BackColor="#F5F7FB" /> 
      <SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
      <SortedDescendingCellStyle BackColor="#E9EBEF" /> 
      <SortedDescendingHeaderStyle BackColor="#4870BE" /> 
     </asp:GridView> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
      ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>" 
      ProviderName="<%$ ConnectionStrings:DatabaseConnectionString1.ProviderName %>" 
      SelectCommand="SELECT [ID], [Title], [Description], [Date Added] AS Date_Added FROM [knowledgebase]"> 
     </asp:SqlDataSource> 

     <br /> 

    </div> 
    <asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1"> 
     <EditItemTemplate> 
      ID: 
      <asp:Label ID="IDLabel1" runat="server" Text='<%# Eval("ID") %>' /> 
      <br /> 
      Title: 
      <asp:TextBox ID="TitleTextBox" runat="server" Text='<%# Bind("Title") %>' /> 
      <br /> 
      Description: 
      <asp:TextBox ID="DescriptionTextBox" runat="server" 
       Text='<%# Bind("Description") %>' /> 
      <br /> 
      Date_Added: 
      <asp:TextBox ID="Date_AddedTextBox" runat="server" 
       Text='<%# Bind("Date_Added") %>' /> 
      <br /> 
      <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" 
       CommandName="Update" Text="Update" /> 
      &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" 
       CausesValidation="False" CommandName="Cancel" Text="Cancel" /> 
     </EditItemTemplate> 
     <InsertItemTemplate> 
      Title: 
      <asp:TextBox ID="TitleTextBox" runat="server" Text='<%# Bind("Title") %>' /> 
      <br /> 
      Description: 
      <asp:TextBox ID="DescriptionTextBox" runat="server" 
       Text='<%# Bind("Description") %>' /> 
      <br /> 
      Date_Added: 
      <asp:TextBox ID="Date_AddedTextBox" runat="server" 
       Text='<%# Bind("Date_Added") %>' /> 
      <br /> 
      <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" 
       CommandName="Insert" Text="Insert" /> 
      &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" 
       CausesValidation="False" CommandName="Cancel" Text="Cancel" /> 
     </InsertItemTemplate> 
     <ItemTemplate> 
      ID: 
      <asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID") %>' /> 
      <br /> 
      Title: 
      <asp:Label ID="TitleLabel" runat="server" Text='<%# Bind("Title") %>' /> 
      <br /> 
      Description: 
      <asp:Label ID="DescriptionLabel" runat="server" 
       Text='<%# Bind("Description") %>' /> 
      <br /> 
      Date_Added: 
      <asp:Label ID="Date_AddedLabel" runat="server" 
       Text='<%# Bind("Date_Added") %>' /> 
      <br /> 

     </ItemTemplate> 
    </asp:FormView> 
    </form> 
</body> 
</html> 
+1

您需要在ItemTemplate中带有commandname =“New”的按钮才能切换到[FormViewMode Insert](http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.formviewmode.aspx )。 –

+0

好吧我想出了如何进入InsertMode,但现在我收到一个错误,当我添加一条记录。说:“除非指定了InsertCommand,否则数据源'SqlDataSource1'不支持插入。” 这是我正在使用的插入模板: ' Insert' – KPS

+0

您可以将代码显示到您的sqldatasource1 – atbebtg

回答

1

要进入插入模式,你必须要么在您的其他模板中包含命令名称为“New”的控件,提供了一些其他输入,可能导致您的代码隐藏以编程方式去(yourFormView).ChangeMode(FormViewMode.Insert)。然后在插入项目模板中,您需要一个按钮,其命令是“插入”,或者是一个可以编程跳转到(yourDataSource).Insert()的控件。最后,您的数据源需要一个InsertCommand,它的值是要执行的SQL,以及提供给它的参数的一些规范,可以使用<InsertParameters>子标签完成,也可以通过编程方式在DataSource_Inserting事件处理程序中完成。

第一步让你进入formview的插入模式,第二步获取表单内容发送回数据源,第三步获取数据源将其写入数据库。

0

你需要在你ItemTemplate按钮进入插入模式以及在InsertCommandSqlDataSource

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
      ConnectionString="<%$ ConnectionStrings:BlaConnectionString %>" 
      InsertCommand="INSERT INTO [Customer] ([Name]) VALUES (@Name)" 
      SelectCommand="SELECT [id], [Name] FROM [Customer]" 
      OnInserted="SqlDataSource1_Inserted"> 
      <InsertParameters> 
       <asp:Parameter Name="Name" Type="String" /> 
      </InsertParameters> 
     </asp:SqlDataSource> 
+0

我不明白这是如何工作的以及如何将其实施到我的代码中。 – KPS

+0

我在我原来的问题中包含了完整的代码 – KPS