что я должен использовать в этом случае фильтр строки или выбрать запрос - PullRequest
0 голосов
/ 04 апреля 2019

Я пишу программу для фильтрации данных в заданной таблице данных в csharp, которая может фильтровать разные каналы на основе их типа и того, что пользователь хочет отнести к новостям, развлечениям и т. Д., Но получаю исключение, когда пользователь впервые нажимает на другие каналы, а не сначала отображать все каналы.

Столбец с именем 'channel_id' уже принадлежит этой таблице данных

дизайн изображения: enter image description here

Я пытался использовать это, применяя фильтр строк в представлении данных по умолчанию.

это полный код со всеми функциями

    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace vp_practice
{
    public partial class Form2 : Form
    {
        DataTable dttvchannel = new DataTable();
        public Form2()
        {
            InitializeComponent();
        }

        private void filldata()
        {
            //Adding columns
            dttvchannel.Columns.Add("channel_id", typeof(int));
            dttvchannel.Columns.Add("channel_name");
            dttvchannel.Columns.Add("Type");
            //Adding Rows
            dttvchannel.Rows.Add(1, "Bol tv", "News");
            dttvchannel.Rows.Add(1, "geo news", "News");
            dttvchannel.Rows.Add(1, "Hum tv", "entertainment");
            dttvchannel.Rows.Add(1, "Ary new", "News");
            dttvchannel.Rows.Add(1, "catoon network", "catoons");
            dttvchannel.Rows.Add(1, "Masala tv", "non tv ");
            dttvchannel.Rows.Add(1, "Ary entertainment", "entertainment ");
            dttvchannel.Rows.Add(1, "dunya tv", "empter");
        }
        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            filldata();
            listBox1.DataSource = dttvchannel;
            listBox1.DisplayMember = "channel_name";
            label2.Text = dttvchannel.DefaultView.Count.ToString();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            dttvchannel.DefaultView.RowFilter ="Type Like '%News'" ;
            label2.Text = dttvchannel.DefaultView.Count.ToString();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            dttvchannel.DefaultView.RowFilter = "Type like '%entertainment'";
            label2.Text = dttvchannel.DefaultView.Count.ToString();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            dttvchannel.DefaultView.RowFilter = "Type Not in('News','entertainment')";
        }
    }
}

если пользователь нажимает другие кнопки, а не показывать все программы должны отображать каналы соответственно

...