2013-07-31 68 views
0

我正在创建一个GridView,它最初会有一个空行(由2个DropDownLists和一个TextBox组成)。页脚中有一个按钮,允许用户在填写第一行后添加另一行。我将它绑定到一个SqlDataSource,所以我可以使用InsertCommand调用存储过程来将用户的数据插入到数据库表中。但是,我不知道如何去添加一个空行。现在,直到执行回发呼叫时,标题才会显示出来。我已经看过使用DataTable添加空行的教程,但是我无法使用此绑定的DropDownLists。有没有办法从后面的代码向SqlDataSource添加一行?以下是我的ASP页面的相关部分:将空行添加到绑定到SqlDataSource的GridView中

 <table> 
     <tr> 
     <td colspan="2" style="width:100%"> 
      <div> 
      <asp:UpdatePanel ID="upUpdateChecklist" runat="server"> 
       <ContentTemplate> 
        <asp:GridView ID="gvUpdate" runat="server" AutoGenerateColumns="False" 
            CssClass="mGrid" PagerStyle-CssClass="pgr" 
            AlternatingRowStyle-CssClass="alt" 
            ShowHeaderWhenEmpty="true" 
            Visible="true" CellSpacing="2" 
           CellPadding="2" ShowFooter="true" 
           DataSourceID="dsUpdate"> 
         <Columns> 
          <asp:TemplateField HeaderText="Division/Context"> 
           <ItemTemplate> 
            <asp:DropDownList ID="ddDivision" runat="server" DataTextField="Division" DataValueField="ID" DataSourceID="dsDivision"/> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Application"> 
           <ItemTemplate> 
            <asp:DropDownList ID="ddApplication" runat="server" DataTextField="Application" DataValueField="ID" DataSourceID="dsApplication" /> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Task"> 
           <ItemTemplate> 
            <asp:TextBox ID="tbTask" runat="server" ReadOnly="false" /> 
           </ItemTemplate> 
          </asp:TemplateField> 

          <asp:TemplateField> 
          <FooterStyle HorizontalAlign="Right" /> 
          <FooterTemplate> 
           <asp:Button ID="btnAdd" Text="Add New Row" runat="server" /> 
          </FooterTemplate> 
          </asp:TemplateField> 
         </Columns> 
        </asp:GridView> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
      </div> 
     </td> 
     </tr> 
     </table> 
     <asp:SqlDataSource ID="dsApplication" SelectCommand="SELECT ID, ApplicationName FROM Automation.dbo.Applications" 
          runat="server" 
          ConnectionString="<%$ ConnectionStrings:AutomationDBConnectionString %>"></asp:SqlDataSource> 

     <asp:SqlDataSource ID="dsDivision" SelectCommand="SELECT ID, Division FROM Automation.dbo.Division ORDER BY Application, Division" 
          runat="server" 
          ConnectionString="<%$ ConnectionStrings:AutomationDBConnectionString %>"></asp:SqlDataSource> 
     <asp:SqlDataSource ID="dsUpdate" runat="server" 
          ConnectionString="<%$ ConnectionStrings:AutomationDBConnectionString %>" 
          SelectCommand=""> 
          <InsertParameters> 
          <asp:Parameter Name="Division" DbType="Int32" /> 
          <asp:Parameter Name="Application" DbType="Int32" /> 
          <asp:Parameter Name="Task" DbType="String" /> 
          </InsertParameters> 
          </asp:SqlDataSource> 
+0

为什么不删除从一个GridView该功能(这是用来显示数据,不空行),并把它你可以插入的每一行后清除面板英寸 –

+0

我正在使用一个GridView,因为我想做一个批量插入而不是每个条目的插入。这样,用户在选择点击按钮执行所述插入之前将看到他们希望插入的所有记录。 – Andrew

回答

1

我不能完全肯定我理解你怎么打算实现你想要的,但如果要生成一个空行,改变的选择命令SQL数据源与空虚拟行进行联合。

<asp:SqlDataSource ID="dsApplication" SelectCommand="SELECT ID, ApplicationName FROM Automation.dbo.Applications UNION select -1 as ID, '' as ApplicationName " 
+0

我编辑了我最初的问题。我不反对将GridView绑定到DataTable,但我不确定如何使用绑定的DropDownLists(到其他数据源)中的两个GridView列来完成此操作。 – Andrew

相关问题