将(每行的)动态下拉列表值从网格视图插入到表中

本文关键字:视图 网格 插入 下拉列表 动态 | 更新日期: 2023-09-27 17:58:58

//aspx中的代码。

   </asp:TemplateField>
        :
        :
        :
   <ItemTemplate>
   <asp:DropDownList ID="didDdl" runat="server" 
    DataSourceID="departmentsDataSource" 
    DataTextField="Department" 
    DataValueField="DepartmentID" 
    SelectedValue='<%# Bind("DepartmentID") %>' 
    Enabled="False" />
   </ItemTemplate>
   </asp:TemplateField>

Q: 我必须一次将选定的下拉列表项全部插入到表中,即当我单击提交按钮(此处未显示)时,所有选定的值都应一次进入表中。

将(每行的)动态下拉列表值从网格视图插入到表中

我的假设是您使用的是Gridview。因此,这将起作用。

protected void btnSubmit_Click(object sender, EventArgs e)
{
    List<string> lst = new List<string>();
    foreach(GridViewRow gvr in GridView1.Rows)
    {
        if (gvr.RowType == DataControlRowType.DataRow)
        {
            lst.Add(((DropDownList)gvr.FindControl("didDdl")).SelectedValue);
        }
    }
}

简易溶液

protected void btnSubmit_Click(object sender, EventArgs e)
{
    SqlCommand comm = new SqlCommand();
    StringBuilder sb = new StringBuilder("INSET INTO [Table] ");
    string template = " SELECT @{0} UNION ALL ";

    foreach(GridViewRow gvr in GridView1.Rows)
    {
        if (gvr.RowType == DataControlRowType.DataRow)
        {
            string value = ((DropDownList)gvr.FindControl("didDdl")).SelectedValue;
            sb.AppendFormat(template, value);
            comm.Parameters.Add(new SqlParameter("@" + value, value));
        }
    }
    comm.CommandText = sb.ToString()
}

您可以从模板列中读取值,然后向SQL server构建一个一次性插入语句。

以下示例显示如何使用一个插入语句插入多个记录:

INSERT INTO MyTable (FirstCol, SecondCol)
SELECT 'First' ,1
UNION ALL
SELECT 'Second' ,2
UNION ALL
SELECT 'Third' ,3
UNION ALL
SELECT 'Fourth' ,4
UNION ALL
SELECT 'Fifth' ,5
GO

我能想到的最好的方法是在arrayList中获取值,并通过for循环将值插入SQL。