从DropDownList&中填充GridView。按钮单击

时间:2014-03-07 11:59:16

标签: c# asp.net gridview

我有一个页面,其中有一个下拉列表,其中填充了名称(Text)和ID(Value),以及我页面上的一个按钮。希望做的是当在下拉列表(DDL)中选择一个项目,并单击该按钮时,一行被添加到GridView,其中包含一列中DDL的Text值,并且另一列中的可编辑字段(默认为空白文本)。

以下是我的GridViewDropDownListButton的标记。

              <asp:GridView runat="server" ID="grdSelectedProduct" BorderWidth="1px" CellPadding="3" CellSpacing="2" AutoGenerateColumns="False" OnRowDataBound="grdSelectedProduct_OnRowDataBound" ShowHeaderWhenEmpty="True">
                                <Columns>
             <asp:BoundField DataField="ProductName" HeaderText="Product" ReadOnly="False"/>
             <asp:BoundField DataField="Description" HeaderText="Description" ReadOnly="False"/>
                                </Columns>
                            </asp:GridView>


           <asp:Button ID="btnAddProduct" runat="server" Text="Add Product" ValidationGroup="valproduct"
                                OnClick="btnAddProduct_OnClick" CssClass="btnAdd" CausesValidation="true" />


          <asp:DropDownList runat="server" ID="ddlProducts" DataTextField="description"
                                DataValueField="alphaKey" CssClass="select" />

到目前为止,我已经能够使用以下硬编码值向网格添加一行,但是这不会使第二列可编辑并且仅添加1行。如果我再次单击该按钮,它将删除值。

    protected void btnAddProduct_OnClick(object sender, EventArgs e)
    {
        DataTable dataTable = new DataTable();
        DataRow dataRow;
        dataTable.Columns.Add("ProductName");
        dataTable.Columns.Add("Description");  // This can be editted by the user
        if (grdSelectedCountries.Rows.Count > 0)
        {
            for (int i = 0; i < grdSelectedCountries.Rows.Count - 1; i++)
            {
                if (grdSelectedProduct.Rows[i].RowType == DataControlRowType.DataRow)
                {
                    dataRow = dataTable.NewRow();
                    dataRow["ProductName"] = "MyTestProduct";
                    dataRow["Description"] = "";
                    dataTable.Rows.Add(dataRow);
                }
            }
        }
        else
        {
            dataRow = dataTable.NewRow();
                    dataRow["ProductName"] = "MyTestProduct";
                    dataRow["Description"] = "";
            dataTable.Rows.Add(dataRow);
        }

        grdSelectedProduct.DataSource = dataTable;
        grdSelectedProduct.DataBind();
    }

我关心的一件事是,如果我将代码放在btnAddProduct_OnClick事件中那么工作服务器端吗?客户端是否会正确更新?

我能否就如何实现目标提供一些指导?

我也意识到这个q&amp; a:passing the value of dropdownlist into gridview,但要求数据表保留在Session中,我希望避免使用。

0 个答案:

没有答案