Combobox显示构件和数据表C#中的两个字段值

时间:2016-11-04 22:44:56

标签: c# oracle

我想将两个字段绑定在一起并在组合框中显示。

我的数据库中有名字和姓氏,如何在组合框中显示全名?

我尝试了这段代码但是我遇到了一些错误:

OracleDataAdapter names= new OracleDataAdapter("SELECT first, last FROM person", conn);
DataTable dt = new DataTable();
names.Fill(dt);
dt.Columns.Add("FullName", typeof(string), "first' : ' last"); //<-- error's here
cmbCBox.DisplayMember = "FullName";
cmbBox.DataSource = dt;
conn.Close();

错误是:

  

':'运算符后缺少操作数。

2 个答案:

答案 0 :(得分:1)

如果你想创建这样的格式:

Donald : Duck

然后表达式为:

dt.Columns.Add("full", typeof(string), "first + ' : ' + last");

示例代码:

System.Data.DataTable dt = new System.Data.DataTable();

dt.Columns.Add("first", typeof(string));
dt.Columns.Add("last", typeof(string));
dt.Columns.Add("full", typeof(string), "first + ' : ' + last");

System.Data.DataRow row = dt.NewRow();
row["first"] = "Donald";
row["last"] = "Duck";
dt.Rows.Add(row);

答案 1 :(得分:1)

只需要求数据库引擎为您创建FullName

// Oracle operator to concatenate strings is || 
string query = @"SELECT first || ' ' || last as FullName FROM person";
OracleDataAdapter names= new OracleDataAdapter(query, conn);
...
cmbCBox.DisplayMember = "FullName";

此方法将仅返回FullName作为第一个和最后一个字段的组合。当然,如果您需要,没有什么可以阻止您添加其他字段。例如,您可能需要PersonID(或人员表上的主键)才能用于组合的ValueMember。通过这种方式,您可以读取SelectedValue以恢复属于所选FullName的Person记录。

最后一点。我认为使用DataTable表达式构建客户端FullName是许多场景的不错选择,但在这种情况下,数据库引擎可以更快地完成它。我建议使用秒表进行简单检查以验证差异。