2010-03-10 86 views
0

我想更新其中ColumnName將DropDown.SelectedValue的表的列。更新表,其中列名是動態選擇的 - DropDown.SelectedValue

實施例:一組記錄將從客戶表,其中CUstNo =「1234」和市=「芝加哥」和等級=「B」

一旦顯示我要更新的等級到「A被顯示'來自上述標準的所有這些客戶。

在我的情況下,我有100列,所以在從列表中選擇條款列名稱。

我的查詢,更新客戶SET的ColumnName =「某個值」,其中的ColumnName =「ActualValue」

所以,我怎麼能傳遞的ColumnName是下拉選擇的值。

我相信我能不能給作爲 更新客戶SET DropDown.SelectedValue = '某個值',其中DropDown.SelectedValue = 'ActualValue'

我怎樣才能解決這個問題?...

回答

2

所以這聽起來像你想建立基於你的網格的動態SQL?如果是這種情況,你總是可以做類似

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

然後你可以執行這個語句。我並不真正知道你在使用什麼,但有更好的方法來做數據庫更新。你可以使用一個ORM像Linq to SqlEntity 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; 
    } 
+0

謝謝你的回覆..我的客戶端使用.NET 2.0,所以無法獲得ORM。那麼在上面的代碼片段集{0} - 它如何知道columnName,因爲ColumnName將從DropDownList中選擇,甚至在哪裏子句如何可以給ColumnName。 列名將由用戶從DropdownList動態選擇.. – msbyuva 2010-03-10 23:07:42

+0

嗯,很難說沒有看到代碼,你的程序看起來像什麼,但我認爲下拉列表中的值是列名,所以當用戶從dll中選擇一個值時,某些事件被觸發,並且在事件處理程序中可以構建動態SQL基於它們在下拉列表中選擇的值。 – 2010-03-11 01:18:23

+0

HI再次感謝您的回覆。是的,當我從ddl中選擇值時,這是真的....我如何構建動態SQL,因爲在動態SQL中,我應該如何以編程方式給出columnName? – msbyuva 2010-03-11 01:49:27