Я пишу программу для фильтрации данных в заданной таблице данных в csharp, которая может фильтровать разные каналы на основе их типа и того, что пользователь хочет отнести к новостям, развлечениям и т. Д., Но получаю исключение, когда пользователь впервые нажимает на другие каналы, а не сначала отображать все каналы.
Столбец с именем 'channel_id' уже принадлежит этой таблице данных
дизайн изображения:
Я пытался использовать это, применяя фильтр строк в представлении данных по умолчанию.
это полный код со всеми функциями
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')";
}
}
}
если пользователь нажимает другие кнопки, а не показывать все программы должны отображать каналы соответственно