我想将两个字段绑定在一起并在组合框中显示。
我的数据库中有名字和姓氏,如何在组合框中显示全名?
我尝试了这段代码但是我遇到了一些错误:
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();
错误是:
':'运算符后缺少操作数。
答案 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是许多场景的不错选择,但在这种情况下,数据库引擎可以更快地完成它。我建议使用秒表进行简单检查以验证差异。