所以這聽起來像你想建立基於你的網格的動態SQL?如果是這種情況,你總是可以做類似
string updateStmt = String.Format("UPDATE Customer SET {0} = 'some value' WHERE...", dropDown.SelectedValue);
然後你可以執行這個語句。我並不真正知道你在使用什麼,但有更好的方法來做數據庫更新。你可以使用一個ORM像Linq to Sql或Entity Framework或者你甚至可以使用像一個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;
}
update語句字符串像這樣的字符串初始化後(如果選擇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;
}
謝謝你的回覆..我的客戶端使用.NET 2.0,所以無法獲得ORM。那麼在上面的代碼片段集{0} - 它如何知道columnName,因爲ColumnName將從DropDownList中選擇,甚至在哪裏子句如何可以給ColumnName。 列名將由用戶從DropdownList動態選擇.. – msbyuva 2010-03-10 23:07:42
嗯,很難說沒有看到代碼,你的程序看起來像什麼,但我認爲下拉列表中的值是列名,所以當用戶從dll中選擇一個值時,某些事件被觸發,並且在事件處理程序中可以構建動態SQL基於它們在下拉列表中選擇的值。 – 2010-03-11 01:18:23
HI再次感謝您的回覆。是的,當我從ddl中選擇值時,這是真的....我如何構建動態SQL,因爲在動態SQL中,我應該如何以編程方式給出columnName? – msbyuva 2010-03-11 01:49:27