Вы имеете в виду фильтрацию строк сетки на основе выбранного значения поля со списком? Если да, мы можем использовать событие «SelectedIndexChanged» поля со списком, отфильтровать строки сетки и переназначить новый источник данных. В приложении windows для форм я добавил поле со списком и вид сетки, как показано на рисунке. введите описание изображения здесь
А код, как показано ниже
public partial class Form1 : Form
{
DataTable table;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//Data for the grid
table = new DataTable();
table.Columns.Add("First Name");
table.Columns.Add("Last Name");
table.Columns.Add("Gender");
table.Rows.Add("Adarsh", "Kumar", Gender.Male);
table.Rows.Add("Ajay", "Murthy", Gender.Male);
table.Rows.Add("Akshatha", "Kulkarni", Gender.Female);
table.Rows.Add("Ananya", "Bhat", Gender.Female);
comboBox1.Items.Clear();
comboBox1.Items.Add("All");
comboBox1.Items.Add(Gender.Male);
comboBox1.Items.Add(Gender.Female);
comboBox1.SelectedItem = comboBox1.Items[0];
}
// Combo box selection index changed event
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox comboBox = sender as ComboBox;
switch (comboBox.SelectedItem)
{
case "All":
{
dataGridView1.DataSource = table;
break;
}
case Gender.Male:
{
//Method call to filter the rows
GetMaleRows();
break;
}
case Gender.Female:
{
//Method call to filter the rows
GetFemaleRows();
break;
}
default:
dataGridView1.DataSource = null;
break;
}
}
//Method to filter female rows and assigned to grid
private void GetFemaleRows()
{
DataTable femaleTable = table.Clone();
for (int i = 0; i < table.Rows.Count; i++)
{
if (table.Rows[i]["Gender"].Equals(Gender.Female))
{
DataRow dataRow = femaleTable.NewRow();
dataRow = table.Rows[i];
femaleTable.Rows.Add(dataRow.ItemArray);
}
}
dataGridView1.DataSource = femaleTable;
}
//Method to filter male rows and assigned to grid
private void GetMaleRows()
{
DataTable maleTable = table.Clone();
for (int i = 0; i < table.Rows.Count; i++)
{
if (table.Rows[i]["Gender"].Equals(Gender.Male))
{
DataRow dataRow = maleTable.NewRow();
dataRow = table.Rows[i];
maleTable.Rows.Add(dataRow.ItemArray);
}
}
dataGridView1.DataSource = maleTable;
}
}
public static class Gender
{
public const string Male = "Male";
public const string Female = "Female";
}
Когда в поле со списком выбрано «Все», отображаются все строки введите описание изображения здесь
Когда в поле со списком выбрано «Мужской», Все строки с отображением Gender = "Male" введите описание изображения здесь
Когда в поле со списком выбрано "Female", все строки с отображенным Gender = "Female" введите описание изображения здесь