我想更新TableName将为DropDown.SelectedValue的表的列。
示例:将从客户表中显示一组RECORDS,其中CUstNo ='1234'且City ='Chicago'且Grade ='B'
一旦显示,我想根据上述标准将所有这些客户的成绩更新为“A”。
在我的情况下,我有100个列,因此将从DaropDown中选择子句列名称。
在我的查询中,更新客户SET ColumnName ='some value',其中ColumnName ='ActualValue'
那么如何传递DropName Selected Value的ColumnName。
我相信我不能给予 更新客户SET DropDown.SelectedValue ='some value',其中DropDown.SelectedValue ='ActualValue'
我该如何解决这个问题?...
答案 0 :(得分:2)
所以听起来你想根据网格构建动态sql?如果是这种情况,您可以随时执行类似
的操作string updateStmt = String.Format("UPDATE Customer SET {0} = 'some value' WHERE...", dropDown.SelectedValue);
然后你可以执行这个声明。我并不确切知道你在使用什么,但有更好的方法来进行数据库更新。您可以使用Linq to Sql或Entity Framework之类的ORM,或者甚至可以使用类似SqlCommandBuilder
的内容编辑:以下是ASP.NET中的一个示例(尽管winform应用程序非常相似)
假设此下拉列表是从某个数据源填充的
<form id="form1" runat="server" method="post" target="Default2.aspx">
<asp:DropDownList ID="test" runat="server" AutoPostBack="true" OnSelectedIndexChanged="test_SelectedIndexChanged">
<asp:ListItem Value="" Selected="True"/>
<asp:ListItem Value="Col1"/>
<asp:ListItem Value="Col2"/>
<asp:ListItem Value="Col3"/>
</asp:DropDownList>
</form>
在事件处理程序中,根据所选列
构建updateStatementprotected void test_SelectedIndexChanged(object sender, EventArgs e)
{
string updateStatement = String.Format("UPDATE Customer SET {0} = 'some value' WHERE {0} = 'some other value'", test.SelectedValue);
//execute the updatestatement;
}
在初始化字符串后(如果选择了Col1),更新语句字符串将如下所示:
"UPDATE Customer SET Col1 = 'some value' WHERE Col1 = 'some other value'"
编辑2:好的,这是winforms应用中的示例
首先,我在组合框中添加了一些值。接下来,当单击表单上的按钮时,我从组合框中选择所选值并在动态sql字符串中使用它。它会给你与上面的asp.net解决方案相同的结果。
public Form1()
{
InitializeComponent();
//add values to combobox from some datasource
comboBox1.Items.Add("Col1");
comboBox1.Items.Add("Col2");
comboBox1.Items.Add("Col3");
}
private void button1_Click(object sender, EventArgs e)
{
string updateStatement = String.Format("UPDATE Customer SET {0} = 'some value' WHERE {0} = 'some other value'", comboBox1.SelectedItem);
//execute the updatestatement;
}