2017-02-21 2 views
0

Может быть, вопрос о нобе. Но я почесываю голову, что я делаю неправильно здесь.asp.net C# выпадающий список findbytext продолжает добавлять элемент?

protected void ddlClientNum_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      DataTable dt = new DataTable(); 
      using (SqlConnection con = new SqlConnection(Bussiness.GetConnectionString("Default"))) 
        { 
         try 
         { 
          SqlDataAdapter adapter = new SqlDataAdapter("select distinct client_name from [dbo].[customer_master] where client_number=" + ddlClientNum.SelectedItem.Text + " order by client_name", con); 
          adapter.Fill(dt); 
          ddlClientName.DataSource = dt; 
          ddlClientName.DataTextField = "client_name"; 
          ddlClientName.DataValueField = "client_name"; 
          ddlClientName.DataBind(); 
          ddlClientName.ClearSelection(); 
          //ddlClientName.SelectedValue = ddlClientName.Items.FindByText((ddlClientNum.SelectedItem.Text).ToString()).Value; 
          //ddlClientName.SelectedValue = ddlClientName.Items.FindByText((dt.Rows[0][0]).ToString()).Value; 
          //ddlClientName.Items.FindByText((dt.Rows[0][0]).ToString()).Selected = true; 
          ddlClientName.SelectedIndex = ddlClientName.Items.IndexOf(ddlClientName.Items.FindByText((dt.Rows[0][0]).ToString())); 
       } 
      } 
    } 

Я заполняю номер клиента и выпадающий список имени клиента на странице загрузки. При выборе номера клиента мне нужно выбрать соответствующее имя клиента, но я не хочу очищать элементы. Мне нужно, чтобы пользователи могли видеть другие имена клиентов, но вам нужно выбрать имя клиента для выбранного номера клиента. Я пробовал 3 вещи, но он продолжает добавлять выбранное имя клиента.

Таким образом, выбранное имя клиента происходит столько раз, что я выбираю соответствующий номер клиента и остается там, даже если я выбираю другой номер клиента.

например. Я выбираю номер клиента: 176 | Имя клиента показывает, что выбрано «Клиент XYZ», но встречается дважды в списке. Если я выберу любой другой номер клиента, а затем снова выберите 176, я вижу, что «XYZ Client» происходит в списке трижды.

Блюз и желтые являются повторяющимися. enter image description here

+0

Является clientNumber и ClientName исходя из той же таблицы или разные? –

ответ

0

Тогда вам не нужно снова связывать здесь. просто установите выбранный индекс.

Кроме того, я предлагаю вам использовать параметризованные запросы. В противном случае он будет уязвим для SQL-инъекции. Для получения дополнительной информации: https://www.mssqltips.com/sqlservertip/2981/using-parameters-for-sql-server-queries-and-stored-procedures/

protected void ddlClientNum_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      DataTable dt = new DataTable(); 
      using (SqlConnection con = new SqlConnection(Bussiness.GetConnectionString("Default"))) 
        { 
         try 
         { 
          SqlDataAdapter adapter = new SqlDataAdapter("select distinct client_name from [dbo].[customer_master] where client_number=" + ddlClientNum.SelectedItem.Text + " order by client_name", con); 
          adapter.Fill(dt); 
          ddlClientName.ClearSelection(); 
          ddlClientName.SelectedIndex = ddlClientName.Items.IndexOf(ddlClientName.Items.FindByText((dt.Rows[0][0]).ToString())); 
       } 
      } 
    } 
+0

Нет, это очистит все предметы. Этого я не хочу. Я хочу, чтобы все элементы были там, но выбранный элемент должен совпадать с выбранным номером клиента. – Sak

+0

@Sak Обновлено. Проверь это. – Sankar

+0

Нет, это все равно добавляет несколько значений. – Sak

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