基于3个表的DropDown依赖项

时间:2012-08-14 09:13:58

标签: c# asp.net

我需要根据之前的下拉列表值获取值。但我很困惑,因为有3个表依赖。

dbo.Client
ClientID(PK) | ClientName

dbo.Client_POC_Bridge
ClientID(FK) | POCID (FK)

dbo.PointOfContact
POCID(PK) | FName | LName

我有2个下拉列表:

DropDownList1:我已经绑定了CLient的表信息

DropDownList2: I need FName and Lname from dbo.PointOfContact

到目前为止,这是代码,但它不起作用..

protected void DropDownList4_SelectedIndexChanged(object sender, EventArgs e)
        {

            DropDownList6.Items.Clear();
            DropDownList6.Items.Add(new ListItem("--Select Point Of Contact--", ""));
            DropDownList6.AppendDataBoundItems = true;

            String var = System.Configuration.ConfigurationManager.ConnectionStrings["KKSTechConnectionString"].ConnectionString;

            String strQuery = "select FirstName, POCID from PointOfCContact " +
                               "where ClientID=@ClientID";
            SqlConnection con = new SqlConnection(var);
            SqlCommand cmd = new SqlCommand();
            cmd.Parameters.AddWithValue("@ClientID",
                DropDownList3.SelectedItem.Value);
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = strQuery;
            cmd.Connection = con;
            try
            {
                con.Open();
                DropDownList6.DataSource = cmd.ExecuteReader();
                DropDownList6.DataTextField = "FirstName";
                DropDownList6.DataValueField = "POCID";
                DropDownList6.DataBind();
                if (DropDownList6.Items.Count > 1)
                {
                    DropDownList6.Enabled = true;
                }
                else
                {
                    DropDownList6.Enabled = false;

                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
                con.Dispose();
            }

        }

1 个答案:

答案 0 :(得分:0)

更改以下行...使用内部联接获取值...

String strQuery ="select pof.FirstName, pof.POCID from PointOfCContact pof Inner Join Client_POC_Bridge cpb On pof.POCID =cpb.POCID where cpb.ClientID=@ClientID";