将空行添加到绑定到SqlDataSource的GridView

时间:2013-07-31 21:15:56

标签: c# asp.net gridview sqldatasource

我正在创建一个GridView,它最初会有一个空白行(由2个DropDownLists和一个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>

1 个答案:

答案 0 :(得分:1)

我不完全确定我理解你打算如何实现你想要的东西但是如果你想生成一个空行,更改SQL数据源的select命令以与空虚拟行进行联合。

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