wpf:combobox绑定数据库

  方式一、通过泛型Dictionary绑定

 Dictionary<int, string> mydic = new Dictionary<int, string>() { 
            {0,"aaaa"},
            {1,"bbbb"},
            {2,"cccc"}
            };
            cobxUserType.ItemsSource = mydic;
            cobxUserType.SelectedValuePath = "Key";
            cobxUserType.DisplayMemberPath = "Value";

然后通过cobxUserType.SelectedValue获得选中的值即可

  方法二、通过数据集绑定

WebDictClassServices.WebDictClass webDict = new WebDictClass();
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            BindCombox();
            BindCombox2(comboBox2,0,"选择系列");
            BindCombox2(comboBox3,0,"选择型号");
        }
        //绑定下拉控件1
        private void BindCombox()
        {
            DataTable dt = webDict.GetMainBrand();
            if (dt != null && dt.Rows.Count == 0)
            {
                dt = new DataTable();
                DataColumn dc1 = new DataColumn("Title");
                DataColumn dc2 = new DataColumn("ID");
                dt.Columns.Add(dc1);
                dt.Columns.Add(dc2);
                DataRow row = dt.NewRow();
                row["title"] = "按品牌选择";
                row["ID"] = "0";
                dt.Rows.Add(row);
            }
            else
            {
                DataRow row = dt.NewRow();
                row["title"] = "按品牌选择";
                row["ID"] = "0";
                dt.Rows.Add(row);
            }
            DataView dv=dt.DefaultView;
            dv.Sort=" ID asc";
            combMainBrand.ItemsSource =dv;
            this.combMainBrand.DisplayMemberPath = "Title";
            this.combMainBrand.SelectedValuePath = "ID";
            combMainBrand.SelectedValue = "0";

        }
//绑定下拉控件
        private void BindCombox2(ComboBox comb, int id,string message)
        {
            DataTable dt = null;

            if (id == 0)
            {
                dt = new DataTable();
                DataColumn dc1 = new DataColumn("Title");
                DataColumn dc2 = new DataColumn("ID");
                dt.Columns.Add(dc1);
                dt.Columns.Add(dc2);
                DataRow row = dt.NewRow();
                row["Title"] = message;
                row["ID"] = "0";
                dt.Rows.Add(row);
            }
            else
            {
                dt = webDict.GetCarSeriesByBrand(id);
                DataRow row = dt.NewRow();
                row["Title"] = message;
                row["ID"] = "0";
                dt.Rows.Add(row);
            }
            DataView dv = dt.DefaultView;
            dv.Sort = " ID asc";
            comb.ItemsSource = dv;
            comb.DisplayMemberPath = "Title";
            comb.SelectedValuePath = "ID";
            if (dt.Rows.Count!=0)
            {
              comb.SelectedValue = dt.Rows[0]["ID"];
            }
        }

        private void combMainBrand_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            int id = Convert.ToInt32(combMainBrand.SelectedValue);
            BindCombox2(comboBox2, id, "选择系列");
            BindCombox2(comboBox3, Convert.ToInt32(comboBox2.SelectedValue), "选择型号");
        }

        private void comboBox2_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            int id = Convert.ToInt32(comboBox2.SelectedValue);
            BindCombox2(comboBox3, id, "选择型号");
        }
 三、IList绑定(类似winForm)

public class Info
    {
        public int Id { get; set; }
        public string Name { get; set; }

    }
        //绑定用户类型
        private void bindUserType()
        {
            IList<Info> list = new List<Info>() { 
             new Info(){ Id=0, Name="供应商"}, new Info(){ 
              Id=1, Name="bbbbbb"} 
             
            };
            cobxUserType.ItemsSource = list;
            cobxUserType.SelectedValuePath = "Id";
            cobxUserType.DisplayMemberPath = "Name";


        }



WPF(Windows Presentation Foundation)应用程序中的ComboBox控件通常用于从数据库中获取数据并显示在一个下拉列表供用户选择。以下是使用ComboBox数据库交互的一般步骤: 1. 连接数据库:首先,你需要通过ADO.NET或其他数据库访问库(如Entity Framework、Linq to SQL或ADO.NET Entity Data Model)建立对数据库的连接。 ```csharp var connectionString = "你的数据库连接字符串"; using (var connection = new SqlConnection(connectionString)) { // 数据库操作... } ``` 2. 查询数据:编写SQL查询来检索ComboBox所需的数据。这通常是基于某个表的查询,例如查找所有类别或选项。 ```csharp var command = new SqlCommand("SELECT * FROM Categories", connection); ``` 3. 加载到ComboBox:使用`DataBinding`将查询结果绑定ComboBox的ItemsSource属性,这样每次打开应用或ComboBox时,数据都会自动更新。 ```csharp var comboBox = new ComboBox(); comboBox.ItemsSource = await ExecuteQueryAsync(command); //异步加载 comboBox.DisplayMemberPath = "CategoryName"; // 显示的字段名 comboBox.SelectedValuePath = "CategoryId"; // 选中的字段名 ``` 4. 异步处理:由于数据库操作通常需要时间,所以最好使用异步方法(如`ExecuteQueryAsync`),避免阻塞UI线程。 5. 更新数据:当数据库有新数据时,可以使用相同的机制刷新ComboBox的内容。 **相关问题--:** 1. WPF中如何实现ComboBox数据动态更新? 2. 如何处理ComboBox中的错误和异常? 3. ComboBox的ValueMember和DisplayMember分别是什么作用?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值