2017-02-22 31 views
0

Я серъёзно обработан и не имеет решения для этой проблемы. У меня есть несколько comboboxes, которые получают значения от sql, чтобы отфильтровать некоторые данные в таблице, проблема в том, что пользователь выбирает combobox, если он хочет очистить его, у него нет возможности сделать это, выберите только другой элемент.добавьте пустое поле в поле со списком, чтобы очистить выбор

После некоторого поиска я добавил button, чтобы очистить comboboxes, но я не хочу, чтобы это решение, я думал, создает пустое место в каждом поле со списком, чтобы очистить выделение.

Как создать такое пространство, которое пользователь может выбрать, если он хочет удалить выделение. КОД:

private void vidro_Load(object sender, EventArgs e) 
     { 
      SqlDataAdapter SDA = new SqlDataAdapter("select distinct desempenho from vidros", con); 
      DataTable DTT = new DataTable(); 
      SDA.Fill(DTT); 
      desempenho.Items.Clear(); 
      foreach (DataRow ROW in DTT.Rows) 
      { 
       desempenho.Items.Add(ROW["desempenho"].ToString()); 
      } 
      SqlDataAdapter SDA2 = new SqlDataAdapter("select distinct valu from vidros", con); 
      DataTable DTT2 = new DataTable(); 
      SDA2.Fill(DTT2); 
      valu.Items.Clear(); 
      foreach (DataRow ROW in DTT2.Rows) 
      { 
       valu.Items.Add(ROW["valu"].ToString()); 
      } 
      SqlDataAdapter SDA3 = new SqlDataAdapter("select distinct fs from vidros", con); 
      DataTable DTT3 = new DataTable(); 
      SDA3.Fill(DTT3); 
      fsolar.Items.Clear(); 
      foreach (DataRow ROW in DTT3.Rows) 
      { 
       fsolar.Items.Add(ROW["fs"].ToString()); 
      } 
      SqlDataAdapter SDA5 = new SqlDataAdapter("select distinct compo from vidros", con); 
      DataTable DTT5 = new DataTable(); 
      SDA5.Fill(DTT5); 
      select.Items.Clear(); 
      foreach (DataRow ROW in DTT5.Rows) 
      { 
       compo.Items.Add(ROW["compo"].ToString()); 
      } 
      SqlDataAdapter SDA6 = new SqlDataAdapter("select distinct sel from vidros", con); 
      DataTable DTT6 = new DataTable(); 
      SDA6.Fill(DTT6); 
      select.Items.Clear(); 
      foreach (DataRow ROW in DTT6.Rows) 
      { 
       select.Items.Add(ROW["sel"].ToString()); 
      } 
     } 
     private void compo_SelectedIndexChanged_1(object sender, EventArgs e) 
     { 
      FillData(); 
     } 
     private void select_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      FillData(); 
     } 
     private void fsolar_SelectedIndexChanged_1(object sender, EventArgs e) 
     { 
      FillData(); 
     } 
     private void valu_SelectedIndexChanged_1(object sender, EventArgs e) 
     { 
      FillData(); 
     } 
     private void desempenho_SelectedIndexChanged_1(object sender, EventArgs e) 
     { 
      FillData(); 
     } 
     private void FillData() 
     { 
      string combo1value = desempenho.Text; 
      string combo2value = valu.Text; 
      string combo3value = fsolar.Text; 
      string combo4value = select.Text; 
      string combo5value = compo.Text; 

      string query = "select [descri],[enchimento],[compo] from vidros where 1=1 "; 
      string queryWhere = ""; 
      SqlDataAdapter sda = new SqlDataAdapter(); 
      SqlCommand cmd = new SqlCommand(); 
      cmd.Connection = con; 
      sda.SelectCommand = cmd; 

Заранее спасибо

+0

Просто введите пустой элемент в качестве первой в вашей коллекции предметов. Если вы покажете нам какой-то код, мы сможем помочь в дальнейшем – Pikoh

+0

@Pikoh ok добавлен код. Спасибо – septaug

ответ

1

Давайте просто использовать один из вашего Наримера в качестве примера:

desempenho.Items.Clear(); 
foreach (DataRow ROW in DTT.Rows) 
{ 
    desempenho.Items.Add(ROW["desempenho"].ToString()); 
} 
desempenho.Items.Items.Insert(0,""); 

Таким образом, вы будете иметь пустой элемент, как первый в ваш комбо, тогда вам придется проверять его при проверке формы.

+0

Это работает, но есть проблема, теперь я получаю 8 пробелов вместо 1 – septaug

+0

Убедитесь, что вы положили 'desempenho.Items.Items.Insert (0," ");' вне 'foreach' – Pikoh

+0

Забудьте об этом , виноват. он работает сейчас. благодаря – septaug