如何使组合框下拉更改其列表与另一个组合框相对应?

时间:2016-04-01 05:46:42

标签: c# wpf combobox

我目前正在为Visual Studio 2015和SQL服务器的商业社会开展一个小项目。我有两个组合框“AccountCode”和“AccountNo”。我想让“AccountNo”组合框改变它的值,与“AccountCode”下拉列表中的文本选择相对应。但我得到以下错误:

  

System.Data.dll中出现'System.Data.SqlClient.SqlException'类型的异常,但未在用户代码中处理

     

附加信息:无法绑定多部分标识符“System.Data.DataRowView”。

private void cmBxAccountCode_DataEntry_SelectedIndexChanged(object sender, EventArgs e)
    {
        cmBxAccountNo_DataEntry.ResetText();
        cmBxAccountNo_DataEntry.Refresh();
        DataSet ds = new DataSet();
        da.SelectCommand = new SqlCommand("SELECT ID,ACCOUNTNO FROM  AccountHolder WHERE ACCOUNTCODE =" + cmBxAccountCode_DataEntry.Text, SQLConnection.con);
        da.Fill(ds);
        cmBxAccountNo_DataEntry.DataSource = ds.Tables[0];
        cmBxAccountNo_DataEntry.DisplayMember = "ACCOUNTNO";
        cmBxAccountNo_DataEntry.ValueMember = "ID";
    }

1 个答案:

答案 0 :(得分:0)

您的查询应该是这样的:

SELECT ID,ACCOUNTNO FROM  AccountHolder WHERE ACCOUNTCODE ='" + cmBxAccountCode_DataEntry.Text  + "'"

但我强烈建议您使用参数化查询以避免注入;并且还为Text取代选定的值(但它是根据数据库中的值)。参数化查询将如下所示:

// Code here
SqlCommand selectCommand=  new SqlCommand("SELECT ID,ACCOUNTNO FROM  AccountHolder WHERE ACCOUNTCODE =@accountCode", SQLConnection.con);
selectCommand.Parameters.Add("@accountCode", SqlDbType.VarChar).Value = cmBxAccountCode_DataEntry.Text;
// execute here