2016-10-26 302 views
-1
    <div class="form-group col-lg-12"> 
         <label for="ddl1">1:</label> 
         <asp:DropDownList ID="ddl1" name="ddl1" CssClass="form-control" runat="server" /> 
        </div> 

        <div class="form-group col-lg-12"> 
         <label for="ddl2">1:</label> 
         <asp:DropDownList ID="ddl2" name="ddl2" CssClass="form-control" runat="server" required /> 
        </div> 

我试图根据ddl1的值选择ddl2的下拉列表项目。因此,“if”函数的Get2为& Get2。 注意:每个ddl的数据将来自我的数据库中的表格。根据第一个选择的下拉列表项加载第二个下拉列表项目

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     ddl1Get(); 
     Get1(); 
     Get2(); 
    } 

    #region "Function" 
    if (ddl1.SelectedItem.Value == "1") 
    { 
     Get1(); 
    } 
    else if (1.SelectedItem.Value == "2") 
    { 
     Get2(); 
    } 
    #endregion 
} 

    #region "Function" 
    if (ddl1.SelectedItem.Value == "1") 
    { 
     Get1(); 
    } 
    else if (ddl1.SelectedItem.Value == "2") 
    { 
     Get2(); 
    } 
#endregion 

void Get1() 
{ 
    con.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = con; 
    cmd.CommandText = "SELECT ID, Category FROM Table1"; 
    SqlDataReader dr = cmd.ExecuteReader(); 
    ddl2.DataSource = dr; 
    ddl2.DataTextField = "Category"; 
    ddl2.DataValueField = "Category"; 
    ddl2.DataBind(); 
    con.Close(); 

    ddl2.Items.Insert(0, new ListItem(" ", "")); 
} 

void Get2() 
{ 
    con.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = con; 
    cmd.CommandText = "SELECT ID, Category FROM Table2"; 
    SqlDataReader dr = cmd.ExecuteReader(); 
    ddl2.DataSource = dr; 
    ddl2.DataTextField = "Category"; 
    ddl2.DataValueField = "Category"; 
    ddl2.DataBind(); 
    con.Close(); 

    ddl2.Items.Insert(0, new ListItem(" ", "")); 
} 
void ddlGet() 
{ 
    con.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = con; 
    cmd.CommandText = "SELECT ID, Category FROM Table0"; 
    SqlDataReader dr = cmd.ExecuteReader(); 
    ddl1.DataSource = dr; 
    ddl1.DataTextField = "Category"; 
    ddl1.DataValueField = "Category"; 
    ddl1.DataBind(); 
    con.Close(); 

    ddl1.Items.Insert(0, new ListItem(" ", "")); 
} 

protected void ddl1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (ddl1.SelectedItem.Value == "1") 
    { 
     Get1(); 
    } 
    else if (ddl1.SelectedItem.Value == "2") 
    { 
     Get2(); 
    } 
} 
+0

你的Page_Load事件是什么样子..这是你应该检查IsPostBack等事情的地方。你甚至试图通过使用调试器的代码..?我也会认为你在Select查询中的第二个下拉列表,你会看到一个Where子句... – MethodMan

+0

也是为什么你向我们展示'void Get2()'方法两次是你粘贴代码中的一个错误。 。? – MethodMan

+0

@MethodMan我不好,我现在修好了。 – Allocen

回答

0

使用OnSelectedIndexChanged事件asp:DropDownList

protected void ddl1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (ddl1.SelectedItem.Value == "1") 
    { 
    Get1(); 
    } 
    else if (ddl1.SelectedItem.Value == "2") 
    { 
    Get2(); 
    } 
} 

另外:

ddl1.DataTextField = "Category"; 
    ddl1.DataValueField = "ID"; 
2

还有就是对的SelectedIndexChanged在下拉dropdown..just双击并复制里面的代码。那么它应该工作得很好。

public void ddl1_selectedIndexChanged(sender,e){ //your code here } 

另外你在代码中提到了两次Get2()。这是一个复制错误还是你没有注意到你的代码?这可能是问题,即使选定的值发生变化,为什么你得到相同的值绑定

+0

我的不好,我现在纠正了它。但仍然不起作用。还编辑了代码。添加页面载入和indexchanged。 – Allocen

+0

为ddl1设置AutoPostBack =“true”并尝试 – James

相关问题