2016-03-02 3 views
0

Я хочу сравнить элементы списка в списке с столбцами столбцов DataTable с именем «время», когда я выбираю дату в monthcalendar, Im пытается удалить элементы в списке, если они равный значениям в столбце, если нет, то используйте значения по умолчанию, которые у меня есть в начале. Но я получаю сообщение: item colection не может быть изменен, когда установлено свойство Datasource. Пожалуйста, помогите мне исправить код:Как сравнить строку DataTable со списком элементов

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); 
     } 

    } 

ответ

0

От моего понимания вы не можете удалять элементы из Listbox, которые имеют свойство DataSource.

Эта ссылка может описать более подробно:

http://www.codeproject.com/Questions/758161/Items-collection-cannot-be-modified-when-the-DataS

Вам нужно будет установить DataSource обнулить, внести изменения, которые вы хотите сделать, а затем повторно добавить DataSource.

0

Чтобы сохранить ограниченные возможности, вам необходимо создать новый список. См. Отредактированный код ниже.

 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); 
    } 

} 
+0

Это просто удалив первую по сравнению выбранной дату в базе данных из списка, после этого больше ничего не происходит при попытке сравнения других дат, мой MyDefaultList является: Список MydefaultList = новый список (); MydefaultList.Add ("08: 00-12: 00"); MydefaultList.Add ("12: 00-16: 00"); MydefaultList.Add ("16: 00-20: 00"); for (int i = 0; i Sivar

Смежные вопросы