Отображение сетки с выпадающим списком в выпадающем списке без базы данных - PullRequest
0 голосов
/ 12 марта 2020

Я новичок в C#, и я хотел бы заполнить Gridview на основе элементов выпадающего списка в выпадающем списке. например, я хотел бы отобразить gridview, где значение столбца состояния в gridview равно 1. Есть ли способ сделать это без базы данных? введите описание изображения здесь

1 Ответ

0 голосов
/ 12 марта 2020

Вы имеете в виду фильтрацию строк сетки на основе выбранного значения поля со списком? Если да, мы можем использовать событие «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" введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...