Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将DataTable行与listbox项进行比较_C#_Mysql_Foreach_Datatable_Listbox - Fatal编程技术网

C# 如何将DataTable行与listbox项进行比较

C# 如何将DataTable行与listbox项进行比较,c#,mysql,foreach,datatable,listbox,C#,Mysql,Foreach,Datatable,Listbox,当我在monthcalendar中选择日期时,我想将列表框中的列表项与名为“time”的DataTable列行进行比较,如果列表框中的项目与列中的值相等,我会尝试删除这些项目,如果不相等,则使用开头的默认项目。但我得到的信息是:设置Datasource属性时无法修改item Collection。请帮我更正代码: private void monthCAL_DateChanged(object sender, DateRangeEventArgs e) { stri

当我在monthcalendar中选择日期时,我想将列表框中的列表项与名为“time”的DataTable列行进行比较,如果列表框中的项目与列中的值相等,我会尝试删除这些项目,如果不相等,则使用开头的默认项目。但我得到的信息是:设置Datasource属性时无法修改item Collection。请帮我更正代码:

   private void monthCAL_DateChanged(object sender, DateRangeEventArgs e)
    {
        string date = monthCAL.SelectionStart.Date.ToString("yyyyMMdd");
        string connetionString = null;
        MySqlConnection connection;
        MySqlCommand command;
        MySqlDataAdapter adapter = new MySqlDataAdapter();
        DataSet ds = new DataSet();
        string sql = null;
        connetionString = "datasource=localhost; database=bokning;port=3306;username=root;password=666666";
        sql = "select day, time from system where day='" + date + "'";
        connection = new MySqlConnection(connetionString);
        try
        {
            connection.Open();
            command = new MySqlCommand(sql, connection);
            adapter.SelectCommand = command;
            adapter.Fill(ds);
            adapter.Dispose();
            command.Dispose();
            connection.Close();

            MyDateT = ds.Tables[0];

            if (MyDateT.Rows.Count > 0)
            {
                foreach (DataRow dr in MyDateT.Rows) { 
                    for (int i = 0; i < MydefaultList.Length; i++)
                    {
                        if (MydefaultList[i].ToString().Equals(dr["time"].ToString())) {
                            listB1.Items.Remove(MydefaultList[i]);
                            //listB1.DataSource = MydefaultList;
                        }
                    }
            }                  
            }
            else
            {
                listB1.DataSource = MydefaultList;
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

    } 
private void monthCAL\u DateChanged(对象发送方,DateRangeEventArgs e)
{
字符串日期=monthCAL.SelectionStart.date.ToString(“yyyyMMdd”);
字符串connetionString=null;
MySqlConnection连接;
MySqlCommand命令;
MySqlDataAdapter=新的MySqlDataAdapter();
数据集ds=新数据集();
字符串sql=null;
connetionString=“datasource=localhost;database=bokning;port=3306;username=root;password=666666”;
sql=“从系统中选择日期和时间,其中日期=”+日期+”;
连接=新的MySqlConnection(connetionString);
尝试
{
connection.Open();
command=newmysqlcommand(sql,connection);
adapter.SelectCommand=command;
适配器。填充(ds);
adapter.Dispose();
command.Dispose();
connection.Close();
MyDateT=ds.Tables[0];
如果(MyDateT.Rows.Count>0)
{
foreach(MyDateT.Rows中的数据行dr){
for(int i=0;i
据我所知,您无法从
列表框
中删除具有
数据源
属性的项目

此链接可以更深入地描述:


您需要将
数据源
设置为空,进行您想要进行的更改,然后重新添加
数据源

您必须创建一个新列表来存储有限的选项。请参阅下面编辑的代码

      private void monthCAL_DateChanged(object sender, DateRangeEventArgs e)
{
    string date = monthCAL.SelectionStart.Date.ToString("yyyyMMdd");
    string connetionString = null;
    MySqlConnection connection;
    MySqlCommand command;
    MySqlDataAdapter adapter = new MySqlDataAdapter();
    DataSet ds = new DataSet();
    string sql = null;
    connetionString = "datasource=localhost; database=bokning;port=3306;username=root;password=666666";
    sql = "select day, time from system where day='" + date + "'";
    connection = new MySqlConnection(connetionString);
    try
    {
        connection.Open();
        command = new MySqlCommand(sql, connection);
        adapter.SelectCommand = command;
        adapter.Fill(ds);
        adapter.Dispose();
        command.Dispose();
        connection.Close();

        MyDateT = ds.Tables[0];
        List<string> limitedList = MyDefaultList; //added line

        if (MyDateT.Rows.Count > 0)
        {
            foreach (DataRow dr in MyDateT.Rows) { 
                for (int i = 0; i < MydefaultList.Length; i++)
                {
                    if (MydefaultList[i].ToString().Equals(dr["time"].ToString())) {
                        limitList.Remove(MyDefaultList[i]);
                        listB1.DataSource = limitedList;
                        //listB1.Items.Remove(MydefaultList[i]); offending line
                        //listB1.DataSource = MydefaultList; offending line
                    }
                }
        }                  
        }
        else
        {
            listB1.DataSource = MydefaultList;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

} 
private void monthCAL\u DateChanged(对象发送方,DateRangeEventArgs e)
{
字符串日期=monthCAL.SelectionStart.date.ToString(“yyyyMMdd”);
字符串connetionString=null;
MySqlConnection连接;
MySqlCommand命令;
MySqlDataAdapter=新的MySqlDataAdapter();
数据集ds=新数据集();
字符串sql=null;
connetionString=“datasource=localhost;database=bokning;port=3306;username=root;password=666666”;
sql=“从系统中选择日期和时间,其中日期=”+日期+”;
连接=新的MySqlConnection(connetionString);
尝试
{
connection.Open();
command=newmysqlcommand(sql,connection);
adapter.SelectCommand=command;
适配器。填充(ds);
adapter.Dispose();
command.Dispose();
connection.Close();
MyDateT=ds.Tables[0];
List limitedList=MyDefaultList;//添加了行
如果(MyDateT.Rows.Count>0)
{
foreach(MyDateT.Rows中的数据行dr){
for(int i=0;i
它只是从列表中删除数据库中第一个已比较的选定日期,然后在尝试比较其他日期时不再发生任何事情,我的MyDefaultList是:list MyDefaultList=new list();MydefaultList.Add(“08:00-12:00”);MydefaultList.Add(“12:00-16:00”);MydefaultList.Add(“16:00-20:00”);对于(inti=0;i