这是故事:
我有这个代码,它获取我的表的列名并填充组合框
void fillcombo()
{
MySqlConnection con = new MySqlConnection(ConnectionString);
string com = "SELECT * FROM driver";
MySqlCommand command = new MySqlCommand(com, con);
con.Open();
MySqlDataReader reader = command.ExecuteReader();
for (int i = 0; i < reader.FieldCount; i++)
{
cmbfilter.Items.Add(reader.GetName(i));
}
然后从它执行此查询
"SELECT driverFName,driverLName,vehicleID,driverContact FROM driver WHERE "+cmbfilter.SelectedText+" LIKE '" + seachtext + "%';";
这件事就像魅力一样,但组合框的价值并不是那么整洁。
而不是如果我可以给它一些自定义值
,例如
driverFName =名字 driverLName =姓氏
同样
有没有办法这样做..
这仅用于测试,请不要担心不使用参数值
答案 0 :(得分:0)
您可以尝试在查询中添加alias吗?
"SELECT
driverFName as 'First Name',
driverLName as 'Last Name',
vehicleID,driverContact FROM driver WHERE "+cmbfilter.SelectedText+" LIKE '" + seachtext + "%';";
答案 1 :(得分:0)
您可以使用数据库别名,也可以使用列名作为键及其匹配的用户友好值来匹配字典。
或者您也可以使用基于相同机制的资源文件,有利于本地化。
你的电话。
编辑:根据要求提供更多详情。
别名
使用driverFName AS "New Column Name"
但会给SQL请求增加不必要的权重。
词典
在班级中创建一个简单的词典<String, String>
,列名称为键,用户友好的值。更好但是,本地化将成为真正的地狱。
因此,您可以执行var niceName = stringDictionary["driverFName"]
之类的操作。
资源
上一个解决方案,在项目中使用资源文件,将其设置为您支持的不同区域设置。每个文件都像字典,对于您来说,依赖于与第二个解决方案相同的系统,但从长远来看,它具有更强大的解决方案。
答案 2 :(得分:0)
我找到了一个可行的解决方案,但不确定这是否正确
使用了swich Case
x
然后使用此代码创建值为
的组合框 void fillcombo()
{
MySqlConnection con = new MySqlConnection(ConnectionString);
string com = "SELECT driverFName,driverLName,vehicleID,driverDlNo,driverContact FROM driver";
MySqlCommand command = new MySqlCommand(com, con);
con.Open();
MySqlDataReader reader = command.ExecuteReader();
cmbfilter.DisplayMember = "Text";
cmbfilter.ValueMember = "Value";
List<ComboboxItem> list = new List<ComboboxItem>();
for (int i = 0; i < reader.FieldCount; i++)
{
string C = reader.GetName(i);
string _name="";
string _value = "";
switch (C)
{
case "id":
_name= "ID";
_value = C;
break;
case "driverFName":
_name = "First Name";
_value = C;
break;
case "driverLName":
_name = "Last name";
_value = C;
break;
case "vehicleID":
_name = "Vehicle No";
_value = C;
break;
case "driverDlNo":
_name = "Licence No";
_value = C;
break;
case "driverContact":
_name = "Contact No";
_value = C;
break;
}