asp.net c#dropdown list findbytext不断添加项目?

时间:2017-02-21 08:34:44

标签: c# asp.net

可能是一个菜鸟问题。但是我在这里摸不着头脑。

    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件事,但它不断添加所选的客户名称。

因此,我选择相应的客户编号时,选择的客户名称会多次出现,即使我选择了另一个客户编号,也会停留在那里。

e.g。我选择客户编号:176 |客户名称显示" XYZ客户端"选中但在列表中出现两次。如果我选择任何其他客户编号然后再选择176我可以看到" XYZ客户端"在列表中出现三次。

蓝调和黄色是重复的。 enter image description here

1 个答案:

答案 0 :(得分:0)

然后你不需要在这里再次绑定。只需设置选定的索引。

另外,我建议您使用参数化查询。否则,它将容易受到SQL注入攻击。 有关详细信息:https://www.mssqltips.com/sqlservertip/2981/using-parameters-for-sql-server-queries-and-stored-procedures/

mask1 = join_data['cluster_x'].isin([3,2,4])
mask2 = join_data['cluster_y'].isin([3,1])
mask3 = join_data['cluster_x'].isin([1,5])
mask4 = join_data['cluster_y'].isin([2,4])

join_data['cluster_z'] = np.where(mask1 & mask2, 1,
                         np.where(mask3 & mask2, 2,
                         np.where(mask1 & mask4, 3, 4)))        

print (join_data)
   cluster_x  cluster_y  cluster_z
0          3          3          1
1          2          0          4
2          5          1          2
3          3          2          3