更新表,动态选择列名称 - DropDown.SelectedValue

时间:2010-03-10 22:10:25

标签: c# vb.net

我想更新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'

我该如何解决这个问题?...

1 个答案:

答案 0 :(得分:2)

所以听起来你想根据网格构建动态sql?如果是这种情况,您可以随时执行类似

的操作
string updateStmt = String.Format("UPDATE Customer SET {0} = 'some value' WHERE...", dropDown.SelectedValue);

然后你可以执行这个声明。我并不确切知道你在使用什么,但有更好的方法来进行数据库更新。您可以使用Linq to SqlEntity 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>

在事件处理程序中,根据所选列

构建updateStatement
protected 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;
    }