2013-07-31 70 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

相關問題