在组合框

时间:2016-09-06 08:06:44

标签: c# mysql combobox

这是故事:

我有这个代码,它获取我的表的列名并填充组合框

        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 + "%';";

这件事就像魅力一样,但组合框的价值并不是那么整洁。

enter image description here

而不是如果我可以给它一些自定义值

,例如

driverFName =名字 driverLName =姓氏

同样

有没有办法这样做..

这仅用于测试,请不要担心不使用参数值

3 个答案:

答案 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;


            }
相关问题