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