2017-02-21 24 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 Client」が選択されていることを示しますが、リストでは2回発生します。他のクライアント番号を選択してもう一度176を選択すると、「XYZ Client」が3回リストに表示されます。

ブルースとイエローが繰り返されます。 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