2013-09-25 130 views
0

我一直有很多得到这个工作的问题,所以我有,我有我的网页上2个下拉菜单,另一个我想隐藏在第一。在第二个下拉列表(任何选择)中进行选择后,我希望第三个下拉列表和其标签可见。他们都连接到一个数据库。我以简单的方式重新创建了代码的这一方面,以提供视觉效果。 我已经在网上寻找帮助。我是.NET新手,并且从未使用jquery或ajax,如果有可能我只想用C#。如果你建议jquery请详细解释一下。 CS页面在这一点上几乎是空的。任何帮助表示赞赏。如何在asp.net中的另一个下拉框中进行选择后显示隐藏的下拉框?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head id="Head1" runat="server"> 
    <title>Dropdowns</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 



     <asp:DropDownList ID="ddlManu" runat="server" AutoPostBack="True" 
      DataSourceID="SqlDataSource1" DataTextField="Field1" DataValueField="ID" > 
     </asp:DropDownList>  
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
      ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
      ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
      SelectCommand="SELECT [Version] FROM [ProductVersion]" 
      DataSourceMode="DataReader"> 
      </asp:SqlDataSource> 


     <asp:DropDownList ID="ddlProduct" runat="server" 
      DataSourceID="SqlDataSource2" DataTextField="Field1" DataValueField="ID" 
      AutoPostBack="True" > 
     </asp:DropDownList> 

     <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
      ConnectionString="<%$ ConnectionStrings:ConnectionString2 %>" 
      ProviderName="<%$ ConnectionStrings:ConnectionString2.ProviderName %>" 
      SelectCommand="SELECT [ID], [Field1], [Field2],[FKID] FROM [MSProducts] 
      WHERE FKID = @ID" DataSourceMode="DataReader"> 

      <SelectParameters> 
      <asp:ControlParameter ControlID="ddlManu" Name="ID" 
      PropertyName="SelectedValue" DefaultValue="" /> 
      </SelectParameters> 
     </asp:SqlDataSource> 

     <br /> 
     <asp:Label ID="Label1" runat="server" Text="Category1:"></asp:Label> 
     <asp:DropDownList ID="ddlPop" runat="server" DataSourceID="SqlDataSource1"> 
     </asp:DropDownList> 
     <br /> 
     <br /> 
     <br /> 
        <br /> 
        <br /> 
        <br /> 

    </form> 
</body> 
</html> 

回答

2

首先,设置你的第三个DD到上可见的伪:

<asp:DropDownList ID="ddlPop" runat="server" Visible="false"></asp:DropDownList> 

然后,OnSelectedIndexChanged你的第二个DD的方法,这样做:

protected void ddlProduct_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    ddlPop.Visible = true; 
} 

我创建了一个小样本使用jquery做同样的事情。 但请注意,对于此方法生效,您需要禁用控件的回发。

http://jsfiddle.net/Gys5Y/1/

+0

谢谢您,先生,您的答案有效,我正朝着我的项目正确的方向前进。 –

1

重写代码这样

<form id="form1" runat="server"> 
<div> 



    <asp:DropDownList ID="ddlManu" runat="server" AutoPostBack="True" 
     DataSourceID="SqlDataSource1" DataTextField="Field1" DataValueField="ID" > 
    </asp:DropDownList>  
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
     ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
     SelectCommand="SELECT [Version] FROM [ProductVersion]" 
     DataSourceMode="DataReader"> 
     </asp:SqlDataSource> 


    <asp:DropDownList ID="ddlProduct" runat="server" 
     DataSourceID="SqlDataSource2" DataTextField="Field1" DataValueField="ID" 
     onselectedindexchanged="ddlProductSelectedIndexChanged" autopostback="true"> 
    </asp:DropDownList> 

    <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ConnectionString2 %>" 
     ProviderName="<%$ ConnectionStrings:ConnectionString2.ProviderName %>" 
     SelectCommand="SELECT [ID], [Field1], [Field2],[FKID] FROM [MSProducts] 
     WHERE FKID = @ID" DataSourceMode="DataReader"> 

     <SelectParameters> 
     <asp:ControlParameter ControlID="ddlManu" Name="ID" 
     PropertyName="SelectedValue" DefaultValue="" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 

    <br /> 
    <asp:Label ID="Label1" runat="server" Text="Category1:" visible="false"></asp:Label> 
    <asp:DropDownList ID="ddlPop" runat="server" DataSourceID="SqlDataSource1" visible="false"> 
    </asp:DropDownList> 
    <br /> 
    <br /> 
    <br /> 
       <br /> 
       <br /> 
       <br /> 

</form> 

然后在你的代码

protected void ddlProductSelectedIndexChanged(object sender, EventArgs e){ 
ddlPop.Visible = true; 
Label1.Visible=true;} 
1

这是更好地在客户端执行此功能。只需指定一个JavaScript函数的onchange你下拉的情况下,把类似$(“#myddl”)的CSS(“显示”,“无”)。进去。 通过这种方式,您将避免向服务器发出无用的请求,并且您的应用程序将运行得更快。

相关问题