我正在编写一个库存系统,我正在使用的当前界面允许用户向数据库中添加项目。每个项目类型都有一个不同的表。
我目前能做的是用整个表及其内容填充DataGridView
,这显然不理想。
我想发生的是,用户从ComboBox
中选择要添加到数据库的项目类型,然后使用相应表中的列填充DataGridView
项目,但不是内容。然后,用户可以添加新行并填充字段。
这是ComboBox
后面的代码,这还允许用户从第二个ComboBox
中选择子类型。
var row = comboBox1.SelectedItem.ToString();
comboBox2.Items.Clear();
comboBox2.Text = "";
if (comboBox1.SelectedItem.ToString() == "ARRAYS")
{
var nameDT = (from names in ARRAYS.AsEnumerable()
where names.Field<string>("Array Type") != null
select names.Array_Type);
var cleanList = nameDT.Distinct().ToArray();
foreach (var item in cleanList)
{
comboBox2.Items.Add(item);
}
}
if (comboBox1.SelectedItem.ToString() == "BATT_CHARGER")
{
var nameDT = (from names in BATT_CHARGER.AsEnumerable()
where names.Field<string>("BATT_SIZE") != null
select names.BATT_SIZE);
var cleanList = nameDT.Distinct().ToArray();
foreach (var item in cleanList)
{
comboBox2.Items.Add(item);
}
}
if (comboBox1.SelectedItem.ToString() == "BUFFERBOX")
{
var nameDT = (from names in BUFFERBOX.AsEnumerable()
where names.Field<string>("BufferBox Type") != null
select names.BufferBox_Type);
var cleanList = nameDT.Distinct().ToArray();
foreach (var item in cleanList)
{
comboBox2.Items.Add(item);
}
}
如何将DataGridView
列设置为与它们将保存到的表相同,而不用所有行数据填充它?
数组
BUFFERBOX
BATT_CHARGER
都是表名,而Array Type,BATT_SIZE和BufferBox Type是列名。
答案 0 :(得分:0)
我最终做了这个,效果很好。
if (comboBox1.SelectedItem.ToString() == "USB_RS232")
{
var nameDT = (from names in USB_RS232.AsEnumerable()
where names.Field<string>("MODEL") != null
select names.MODEL);
datatable = USB_RS232;
var cleanList = nameDT.Distinct().ToArray();
foreach (var item in cleanList)
{
comboBox2.Items.Add(item);
}
}
dataGridView1.Columns.Clear();
foreach (DataColumn item in datatable.Columns)
{
var colname = item.ColumnName.ToString();
dataGridView1.Columns.Add(colname, colname);
}
当您从dataTable
中选择一个comboBox
时,便会选择dataTable
,然后在Services.cs
中循环遍历他的列名,并将其添加到DGV中。