Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在一个组合框中显示两个不同的列_C#_Sql Server 2008 - Fatal编程技术网

C# 如何在一个组合框中显示两个不同的列

C# 如何在一个组合框中显示两个不同的列,c#,sql-server-2008,C#,Sql Server 2008,我想在一个特定的组合框中显示两个不同的列。当我运行它时,将显示客户ID。这是我的密码 void GetRecords2() { SqlCommand cmd = new SqlCommand(); cmd.Connection = cn; cmd.CommandText = "SELECT CustomerID, firstname + ',' + lastname FROM Customer"; SqlDataAdapter ad

我想在一个特定的组合框中显示两个不同的列。当我运行它时,将显示
客户ID
。这是我的密码

void GetRecords2()
{


    SqlCommand cmd = new SqlCommand();
    cmd.Connection = cn;
    cmd.CommandText = "SELECT CustomerID, firstname 
            + ',' + lastname FROM Customer";

    SqlDataAdapter adp = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    adp.Fill(ds, "Customer");

    cboName.DataSource = ds;
    cboName.DisplayMember = "Customer.firstname, Customer.lastname";


    cboName.ValueMember = "Customer.CustomerID";


}

我看到您已经在创建一个包含“合并”值的结果列。这就是我们的战斗

但是,您需要为您的列指定一个名称(注意
作为全名
别名):

因此,您可以稍后按名称引用它:

cboName.DisplayMember = "FullName";

这会奏效的。我发现将
字典
绑定到
组合框
会产生更可预测的结果

我的方法省略了额外的
SQL
语法、
DataSet
SqlDataAdapter

相反,我使用
SqlDataReader
将所需信息放入
字典
,然后将该
字典
绑定为
组合框的
数据源

void GetRecords2()
{         
    Dictionary <int, string> myDict = new Dictionary<int, string>();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = cn;
    cmd.CommandText = "SELECT CustomerID, firstname, lastname FROM Customer";

    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
       myDict.Add(Convert.ToInt32(reader["CustomerID"]), 
            reader["firstname"].ToString() + " " + reader["lastname"].ToString());
    }

    if (myDict.Count > 0)
    {
       cboName.DataSource = new BindingSource(myDict, null);
       cboName.DisplayMember = "Value";            
       cboName.ValueMember = "Key";  
    }          
}
void GetRecords2()
{         
Dictionary myDict=新字典();
SqlCommand cmd=新的SqlCommand();
cmd.Connection=cn;
cmd.CommandText=“从客户中选择CustomerID、firstname、lastname”;
SqlDataReader=cmd.ExecuteReader();
while(reader.Read())
{
myDict.Add(Convert.ToInt32(读卡器[“CustomerID”]),
阅读器[“firstname”].ToString()+“”+reader[“lastname”].ToString());
}
如果(myDict.Count>0)
{
cboName.DataSource=newbindingsource(myDict,null);
cboName.DisplayMember=“Value”;
cboName.ValueMember=“Key”;
}          
}
检查以下内容:

void GetRecords2()
{
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = cn;
    cmd.CommandText = "SELECT CustomerID, firstname 
            + ',' + lastname FullName FROM Customer";

    SqlDataAdapter adp = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    adp.Fill(ds, "Customer");

    cboName.DataSource = ds;
    cboName.DisplayMember = "FullName";


    cboName.ValueMember = "CustomerID";
}
要获取选定值,请执行以下操作:

string customerid = cboName.SelectedValue.toString(); //CustomerID: 1
获取所选项目的步骤

string fullname = cboName.SelectedItem.Text;  //FullName :  John Hawkins

致以最诚挚的问候

组合框仍显示客户信息不确定是否可能?你到底是什么意思
string fullname = cboName.SelectedItem.Text;  //FullName :  John Hawkins