将(每行的)动态下拉列表值从网格视图插入到表中
本文关键字:视图 网格 插入 下拉列表 动态 | 更新日期: 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。