Похоже, что вы хотите заполнить свой второй datagridview
на основе выбора в вашем первом datagridview
.Это один из способов сделать это:
- В разделе «Загрузка или поиск моего первого
datagridview
» используйте событие DataBindingComplete
, которое затем заполняет второе datagridview
на основе идентификатора выбранной записи.в первом datagridview
. - Затем, если изменяется выбор в первом просмотре сетки данных, я использую событие в
BindingSource_PositionChanged
для повторного заполнения второй сетки.
Пример кода
// this populates the grid.
private void SearchButton_Click(object sender, EventArgs e)
{
// your code to load your grid goes here
}
private void DataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
var drv = datagridview1bindingSource.Current as DataRowView;
if(drv != null)
// your method to load datagridview2 goes here if the selected row is not null
LoadDataGridView2();
}
private void LoadDataGridView2()
{
//populate datagridview2 using the selected row id from datagridview1
}
// finally when the position is changed on the datagridview1 binding source, then re-populate // the datagridview2
private void datagridview2BindingSource_PositionChanged(object sender, EventArgs e)
{
LoadDataGridView2();
}
это основной способ заполнения второй сетки на основе выбора в первой.
Редактировать:
Ваш комментарий говорит, что вы заполняете datagridview
всеми расходами, поэтому для фильтрации вы захотите использовать свойство Filter
в BindingSource
для datagridview
.Свойство Filter
позволяет просматривать подмножество источника данных.
Пример из MSDN :
private void PopulateDataViewAndFilter()
{
DataSet set1 = new DataSet();
// Some xml data to populate the DataSet with.
string musicXml =
"<?xml version='1.0' encoding='UTF-8'?>" +
"<music>" +
"<recording><artist>Coldplay</artist><cd>X&Y</cd></recording>" +
"<recording><artist>Dave Matthews</artist><cd>Under the Table and Dreaming</cd></recording>" +
"<recording><artist>Dave Matthews</artist><cd>Live at Red Rocks</cd></recording>" +
"<recording><artist>Natalie Merchant</artist><cd>Tigerlily</cd></recording>" +
"<recording><artist>U2</artist><cd>How to Dismantle an Atomic Bomb</cd></recording>" +
"</music>";
// Read the xml.
StringReader reader = new StringReader(musicXml);
set1.ReadXml(reader);
// Get a DataView of the table contained in the dataset.
DataTableCollection tables = set1.Tables;
DataView view1 = new DataView(tables[0]);
// Create a DataGridView control and add it to the form.
DataGridView datagridview1 = new DataGridView();
datagridview1.AutoGenerateColumns = true;
this.Controls.Add(datagridview1);
// Create a BindingSource and set its DataSource property to
// the DataView.
BindingSource source1 = new BindingSource();
source1.DataSource = view1;
// Set the data source for the DataGridView.
datagridview1.DataSource = source1;
//The Filter string can include Boolean expressions.
source1.Filter = "artist = 'Dave Matthews' OR cd = 'Tigerlily'";
}
Я использую этот тип фильтра для отображения данных на основев счет.Для учетной записи у меня есть текстовое поле, когда пользователь помещает номер учетной записи, и я использую событие TextChanged, чтобы применить фильтр.Тогда у меня есть кнопка, которая используется для удаления фильтра из источника привязки.
Вы можете применить то же самое к вашему сетевому представлению расходов, используя tripid из вашего первого сетевого обзора данных.