我从数据库中检索到组合框中的数据。
从组合框中选择值后,如何将这些数据添加到“数据网格视图”中?
SqlConnection conn = new SqlConnection(conStr);
string query = "select * from products";
SqlCommand cmd = new SqlCommand(query, conn);
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
comboBox3.Items.Add(rdr[0]+"-\t"+rdr[1]+"-"+"Exp Date\t"+rdr[4]);
}
conn.Close();
上面是我的代码,用于将数据检索到组合框,
答案 0 :(得分:0)
因此,您应该将记录保存在列表,数组等上,例如:
List<string> LstProductos = new List<string>;
然后
while (rdr.Read())
{
LstProductos.Add(rdr[0]+"-\t"+rdr[1]+"-"+"Exp Date\t"+rdr[4])
}
对于负载组合框:
foreach(string str in LstProductos)
{
ComboBox.items.add(str);
}
最后在您的组合框的SelectedIndexChanged event上
:private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
string YourItem = comboBox1.Text;
//If you only want to add selected item
DataGridView.Add(YourItem);
//or add all
foreach (string str in LstProductos)
{
DataGridView.Rows.Add(str);
}
}
答案 1 :(得分:0)
根据以下设置,有两种方法可以解决您的问题 如果只想为dataGridView添加单行,则只需按照以下方法(1)使用列表的概念。
但是,如果要在从ComboBox中选择时添加更多行,则可以使用DataTable Method(2)。请注意,DataTable还包括从ComboBox中选择的GridView中productID列的primaryKey。
如果要删除主键,请在方法(2)中注释主键的代码。
方法(1):
public class GridviewData
{
public string ProductId{set;get;}
public string ProductName { set; get; }
public string ExpireDate { set; get; }
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string selectedItem = comboBox1.SelectedItem.ToString();
List<string> dataList = selectedItem.Split('-').ToList();
GridviewData data = new GridviewData();
data.ProductId = dataList[0];
data.ProductName = dataList[1];
data.ExpireDate = dataList[2];
List<GridviewData> gridviewList = new List<GridviewData>();
gridviewList.Add(data);
dataGridView1.DataSource = gridviewList;
}
}
方法(2):
public partial class Form1 : Form
{
DataTable dt = new DataTable();
public Form1()
{
InitializeComponent();
DataColumn productID = new DataColumn();
productID.ColumnName = "Product ID";
dt.Columns.Add(productID);
dt.Columns.Add("Product Name");
dt.Columns.Add("Expire Date");
dt.PrimaryKey = new DataColumn[] {productID };//if you want to set primary key for dataTable upon productID
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
string selectedItem = comboBox1.SelectedItem.ToString();
List<string> data = selectedItem.Split('-').ToList();
dt.Rows.Add(new object[] { data[0], data[1], data[2] });
dataGridView1.DataSource = dt;
}
catch(Exception er)
{
MessageBox.Show(er.Message);
}
}
}
如果要删除PrimaryKey,请注释以下代码,
//dt.PrimaryKey = new DataColumn[] {productID };
保持祝福