你好,有人知道如何将临时数据添加到datagridview中吗?
我有2个组合框:genderComboBox(项目:女性,男性),countryComboBox(项目:美国,德国) 1个按钮(buttonAdd): 1 datagridview(genderColumn,countryColumn):
如何将它们添加到datagridview?我不希望它们直接存储到数据库中。
如何在gridview中添加多个值?
这是我试过的
private void buttonAdd_Click(object sender, EventArgs e)
{
DataTable table = new DataTable();
table.Columns.Add("Country");
table.Rows.Add(countryComboBox.Text);
dataGridView1.DataSource = table;
}
在这个解决方案中,我可以看到两个问题:
谢谢!!!
答案 0 :(得分:2)
创建一个列表项,该列表项是包含OnClick事件的类的datamember。将DataSource设置为构造函数中的列表。当有人单击“添加”按钮时,使用comobo框中的值将一个anoymous对象添加到列表中,然后将数据重新绑定到datagrid。这是一个简短的例子。
YourClass
{
private List<object> list;
public Page_Load(object sender, args e)
{
if (!isPostBack) // only initialize once when the page first loads
{
list = new List<object>();
datagrid.datasource = list;
}
}
protected void OnClickButton(object sender, args e)
{
list.add(new { Gender = genderComboBox.Text, Country = countryComoBox.Text });
datagrid.DataBind();
}
}
编辑: 这是一个关于匿名类型http://msdn.microsoft.com/en-us/library/bb397696.aspx的更多信息的链接。对我来说,与快速填充网格相比,它们更灵活,更动态,而不是手动创建列等。
在阅读了您的一条评论之后,我重新编写了我的示例,以便更好地解决您的具体问题。
答案 1 :(得分:1)
将创建代码放在构造函数中,然后将click方法放在click事件中。
答案 2 :(得分:1)
DataTable table = new DataTable();
结果是一个新的清晰数据表。这就是你的旧插件丢失的原因 这样做
DataTable table = new DataTable();
private void buttonAdd_Click(object sender, EventArgs e)
{
//insert your value at the right place
datatable.rows.add();
datatable.rows[datagrid.rows.count].cells[x].value = countrybox.Text;
//x = columns index of your country column
}
在启动时创建列,也许是form_load
datatable.columns.add("country");
答案 3 :(得分:-1)
你可以试试这个:
//Create 2 datasource for combobox in grid
DataTable genderTable= new DataTable();
genderTable.Columns.Add(new DataColumn("Value", typeof(int)));
genderTable.Columns.Add(new DataColumn("Name", typeof(String)));
genderTable.Rows.Add(new object[] { 0, 'male'});
genderTable.Rows.Add(new object[] { 1, 'female'});
DataTable countryTable= new DataTable();
countryTable.Columns.Add(new DataColumn("Value", typeof(int)));
countryTable.Columns.Add(new DataColumn("Name", typeof(String)));
countryTable.Rows.Add(new object[] { 0, 'USA'});
countryTable.Rows.Add(new object[] { 1, 'Germany'});
//Create 2 combobox column
DataGridViewColumn gender= new DataGridViewColumn(new DataGridViewComboBoxCell());
DataGridViewColumn country= new DataGridViewColumn(new DataGridViewComboBoxCell());
//Add column into grid
dataGridView1.Columns.Add(gender);
dataGridView1.Columns.Add(country);
// Add rows into grid, number of rows is 10
dataGridView1.Rows.Add(10);
for (int i = 0; i < 10; i++) {
((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[0]).DataSource = genderTable;
((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[0]).DisplayMember = "Name";
((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[0]).ValueMember = "Value";
((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[0]).Value = 0;
((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[1]).DataSource = countryTable;
((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[1]).DisplayMember = "Name";
((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[1]).ValueMember = "Value";
((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[1]).Value = 0;
}
HTH。