将datagridview从一种形式传递到另一种形式
本文关键字:另一种 一种 datagridview | 更新日期: 2023-09-27 18:08:12
我想通过我的datagridview从form1到form2。我已经尝试过构造函数,但没有结果,第二种形式的datagridview是空的。谁能帮我一下,我忙了好几个小时了。我不使用sql,我不需要使用数据表。下面是我的代码:
我在datagridview2的cellClick事件上填充datagridview3。当我点击dayagridview2 cellClick_event时,我的datagridview3被这个方法填充:
private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)
{
DataD d = new DataD();
d.Mat(dataGridView1,dataGridView2,dataGridView3);
}
这里是填充dataGridView3的方法:
public void Mat(DataGridView dataGridView1, DataGridView dataGridView2,DataGridView dataGridView3)
{
Named n = new Named();
foreach (DataGridViewCell cell in dataGridView2.SelectedCells)
{
IList<String> lista = new List<String>();
n.Data = string.Empty;
n.Data2 = string.Empty;
int indexOfYourColumn = 9;
int index2 = 0;
var restaurantList = new List<Named>();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
n.Data = row.Cells[indexOfYourColumn].Value.ToString();
if (cell.Value.ToString() == n.Data.ToString())
{
restaurantList.Add(new Nalozi()
{
Data = row.Cells[indexOfYourColumn].Value.ToString(),
Data2 = row.Cells[index2].Value.ToString()
});
}
}
dataGridView3.DataSource = restaurantList;
}
}
所以现在我只需要在buttnClick上以另一种形式显示这个dataGridView3
如果您想将DataGridView
从一个表单传递到另一个表单,则可能必须将DataGridView
的DataGridView.DataSource
从一个表单传递到另一个表单。像这样的
new SecondForm(dataGridView.DataSource)
和您的SecondForm
将接受传递的DataSource
并将其传递给该形式的DataGridView
class SecondForm
{
public SecondForm(object dataSource)
{
InitializeComponents();
dataGridView.DataSource = dataSource;
}
}
如果你想传递DataSource
的副本,你可以从FirstForm
的DataGridView
的现有数据中创建一个新的DataTable
private DataTable GetDataTableFromDGV(DataGridView dgv)
{
var dt = new DataTable();
foreach (DataGridViewColumn column in dgv.Columns)
{
if (column.Visible)
{
// You could potentially name the column based on the DGV column name (beware of dupes)
// or assign a type based on the data type of the data bound to this DGV column.
dt.Columns.Add();
}
}
object[] cellValues = new object[dgv.Columns.Count];
foreach (DataGridViewRow row in dgv.Rows)
{
for (int i = 0; i < row.Cells.Count; i++)
{
cellValues[i] = row.Cells[i].Value;
}
dt.Rows.Add(cellValues);
}
return dt;
}
和update第一次调用this
new SecondForm(GetDataTableFromDGV(dataGridView))