如何将选中的列表框绑定到 C# 中的组合框?
How to bind a checkedlistbox to a combobox in C#?
我有一个组合框,用户可以 select 一个项目,并且基于选中列表框中的该项目,需要填充一些其他项目。
- 当列中的所有值都不同时,我可以将组合框绑定到数据库中的列。但是,在这种情况下,该列中有重复的项目,我不想有多个相同类型的项目。我只想在组合框中有一个“Crawler”和一个“All Terrain”。
这是用于将源绑定到组合框的代码,但不适用于这种情况。
comboBox1.ValueMember = "crane index";
comboBox1.DisplayMember = "crane type";
comboBox1.DataSource = test.Tables["cranemaintable"];
这是数据库中的 table
| Crane Index | Crane Model Number | Crane Type |
|:-----------:|:------------------:|:-----------:|
| 221 | LR 1400-1 | Crawler |
| 258 | CC 2800 | Crawler |
| 262 | CC 2400-1 | All Terrain |
| 265 | CC 6800 | Crawler |
| 277 | LR 11350 | All Terrain |
- 数据库:MS Access
- 数据集:测试
- table 的名称:cranemaintable
我已经检查了与我的问题相关的其他问题,但找不到我的问题的答案。
您的帮助将不胜感激。
谢谢
更新:
这是我发现并为我工作的。
// create a list that holds all the crane types but it should not have duplicated items
List<string> crane_type = new List<string>();
for (int i = 0; i< test.Tables["cranemaintable"].Rows.Count; i++)
{
if (!crane_type.Contains(test.Tables["cranemaintable"].Rows[i]["crane type"]))
{
crane_type.Add(Convert.ToString(test.Tables["cranemaintable"].Rows[i]["crane type"]));
}
}
//bind the crane_type list to the combobox1
comboBox1.DataSource = crane_type;
好的,首先我的回答很丑陋,但它有效,而且我知道这是唯一的,所以我们从您将数据库表导入列表开始
这是一个 class 你可以使用
public class myclass
{
public string CraneIndex { get; set; }
public string CraneModelNumber { get; set; }
public string CraneType { get; set; }
}
然后列出 3 个列表
List<myclass> myclasses = new List<myclass>();
List<myclass> myclasses1 = new List<myclass>();
List<myclass> myclasses2 = new List<myclass>();
在这里您将 table 导入列表 myclasses
然后我们过滤来自数据库的主列表以仅具有唯一类型
myclasses1 = myclasses.GroupBy(myclass => myclass.CraneType).Select(x => x.First()).ToList();
comboBox1.DataSource = myclasses1;
comboBox1.DisplayMember = "CraneType";
转到 combobox
并订阅 selectedindexchanged
属性 并将其添加到其函数中
myclasses2.Clear();
foreach (var item in myclasses)
{
if (comboBox1.Text==item.CraneType)
{
myclasses2.Add(item);
}
}
checkedListBox1.Items.Clear();
foreach (var item in myclasses2)
{
checkedListBox1.Items.Add(item.CraneModelNumber);
}
this.checkedListBox1.DisplayMember = "cranemodels";
checkedListBox1.Refresh();
如果您需要更多帮助或解释,请告诉我。
我有一个组合框,用户可以 select 一个项目,并且基于选中列表框中的该项目,需要填充一些其他项目。
- 当列中的所有值都不同时,我可以将组合框绑定到数据库中的列。但是,在这种情况下,该列中有重复的项目,我不想有多个相同类型的项目。我只想在组合框中有一个“Crawler”和一个“All Terrain”。
这是用于将源绑定到组合框的代码,但不适用于这种情况。
comboBox1.ValueMember = "crane index";
comboBox1.DisplayMember = "crane type";
comboBox1.DataSource = test.Tables["cranemaintable"];
这是数据库中的 table
| Crane Index | Crane Model Number | Crane Type |
|:-----------:|:------------------:|:-----------:|
| 221 | LR 1400-1 | Crawler |
| 258 | CC 2800 | Crawler |
| 262 | CC 2400-1 | All Terrain |
| 265 | CC 6800 | Crawler |
| 277 | LR 11350 | All Terrain |
- 数据库:MS Access
- 数据集:测试
- table 的名称:cranemaintable
我已经检查了与我的问题相关的其他问题,但找不到我的问题的答案。 您的帮助将不胜感激。 谢谢
更新: 这是我发现并为我工作的。
// create a list that holds all the crane types but it should not have duplicated items
List<string> crane_type = new List<string>();
for (int i = 0; i< test.Tables["cranemaintable"].Rows.Count; i++)
{
if (!crane_type.Contains(test.Tables["cranemaintable"].Rows[i]["crane type"]))
{
crane_type.Add(Convert.ToString(test.Tables["cranemaintable"].Rows[i]["crane type"]));
}
}
//bind the crane_type list to the combobox1
comboBox1.DataSource = crane_type;
好的,首先我的回答很丑陋,但它有效,而且我知道这是唯一的,所以我们从您将数据库表导入列表开始 这是一个 class 你可以使用
public class myclass
{
public string CraneIndex { get; set; }
public string CraneModelNumber { get; set; }
public string CraneType { get; set; }
}
然后列出 3 个列表
List<myclass> myclasses = new List<myclass>();
List<myclass> myclasses1 = new List<myclass>();
List<myclass> myclasses2 = new List<myclass>();
在这里您将 table 导入列表 myclasses
然后我们过滤来自数据库的主列表以仅具有唯一类型
myclasses1 = myclasses.GroupBy(myclass => myclass.CraneType).Select(x => x.First()).ToList();
comboBox1.DataSource = myclasses1;
comboBox1.DisplayMember = "CraneType";
转到 combobox
并订阅 selectedindexchanged
属性 并将其添加到其函数中
myclasses2.Clear();
foreach (var item in myclasses)
{
if (comboBox1.Text==item.CraneType)
{
myclasses2.Add(item);
}
}
checkedListBox1.Items.Clear();
foreach (var item in myclasses2)
{
checkedListBox1.Items.Add(item.CraneModelNumber);
}
this.checkedListBox1.DisplayMember = "cranemodels";
checkedListBox1.Refresh();
如果您需要更多帮助或解释,请告诉我。