Добавление пустых строк в GridView, связанное с SqlDataSource

Я создаю GridView, который изначально будет иметь пустую строку (состоящую из 2 DropDownList и одного TextBox). В нижнем колонтитуле есть кнопка, которая позволит пользователю добавить еще одну строку после заполнения первой. Я привязываю это к SqlDataSource, поэтому я могу использовать InsertCommand для вызова хранимой процедуры для вставки данных пользователя в таблицу базы данных. Однако я не уверен, как добавить пустую строку. Прямо сейчас заголовки не будут отображаться до тех пор, пока не будет выполнен обратный вызов. Я видел учебные пособия, в которых DataTable используется для добавления пустой строки, но мне не удалось заставить это работать с привязанными DropDownLists. Есть ли способ добавить строку в SqlDataSource из кода? Ниже приведена соответствующая часть моей страницы ASP:

        <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>

person Andrew    schedule 31.07.2013    source источник
comment
Почему бы не удалить эту функцию из GridView (которая предназначена для отображения данных, а не пустых строк) и поместить ее в панель, которую можно очищать после каждой вставки строки.   -  person Garrison Neely    schedule 01.08.2013
comment
Я использую GridView, потому что хочу сделать одну массовую вставку, а не вставку для каждой записи. Таким образом, пользователь увидит все записи, которые он хочет вставить, прежде чем он нажмет кнопку для выполнения указанной вставки.   -  person Andrew    schedule 01.08.2013


Ответы (1)


Я не совсем уверен, что понимаю, как вы собираетесь достичь того, чего хотите, но если вы хотите создать пустую строку, измените команду выбора источника данных SQL, чтобы выполнить объединение с пустой фиктивной строкой.

   <asp:SqlDataSource ID="dsApplication" SelectCommand="SELECT ID, ApplicationName FROM Automation.dbo.Applications UNION select -1 as ID, '' as ApplicationName "
person Icarus    schedule 31.07.2013
comment
Я отредактировал свой первоначальный вопрос. Я не против привязки GridView к DataTable, но я не совсем уверен, как это сделать, когда 2 столбца GridView являются привязанными DropDownLists (к другим источникам данных). - person Andrew; 01.08.2013