2010-08-27 44 views
3

我有一个基于文本框内容填充的ASP.NET数据绑定下拉列表。填充后,我想自动扩展下拉列表,以便用户意识到需要做出选择,并且不需要单击下拉列表以展开它。似乎没有这样做的财产或方法。强制asp.net dropdownlist展开

编辑:在尝试了Ed B的例子后,我仍然卡住了。我的ddl的ID是'ctl00_ContentPlaceHolder9_ddlContact'。如果我把下面的一个按钮的onclick事件,它工作正常,下拉很好的扩展:

document.getElementById('ctl00_ContentPlaceHolder9_ddlContact').size=10; 

然而,在DDL的数据绑定事件下面的代码显示了警报,但不会扩大下拉菜单:

string script = "<SCRIPT LANGUAGE='JavaScript'> "; 
    script += "alert('expanding');document.getElementById('ctl00_ContentPlaceHolder9_ddlContact').size=10 </SCRIPT>"; 
    ClientScript.RegisterClientScriptBlock(GetType(), "Dropdown", script); 
+0

可能重复[是否有可能使用JS打开一个HTML选择显示它的选项列表?(http://stackoverflow.com/questions/430237/is-it-possible使用js打开html选择显示其选项列表) – 2010-08-27 20:07:28

+0

以编程方式获取DropDownList的客户端ID - ctl00_ContentPlaceHolder9_ddlContact,在这种情况下 - 从服务器端代码,使用ClientID属性,就像这样 - ddlContact。ClientID – 2010-08-27 21:35:36

回答

0

您可以在更改下拉列表后更改其大小。选择一个选项后,大小可以变回1.

此代码更改鼠标悬停的大小,但您更改它以在服务器端绑定后调用open_ddl。

<script language="javascript">  
function open_ddl() 
    { 
    document.getElementById("select1").size=5 
    } 

    function close_ddl() 
    { 
    document.getElementBById("select1").size=1 
    } 

    </script> 

    Worst President Ever: 
    <select id="Select2" runat="SERVER" onmouseover="open_ddl()" onmouseout="close_ddl()"> 
        <option value="0" >Obama</option> 
        <option value="1" >Carter</option> 
        <option value="2" >Nixon</option> 
        <option value="3" >Clinton</option> 
    </select> 
+0

您是否将布什从名单中排除而发表声明? – 2010-08-27 20:17:39

+0

我建议更改答案以删除政治。与StackOverflow不相关。 – 2010-08-27 20:19:05

+0

投票我下降的原因在下拉列表中的值,而不是答案...典型的自由派 – 2010-08-28 00:07:56

2

摘要:不能展开香草下拉列表。有关更多信息,请参阅此讨论:Can I open a dropdownlist using jQuery。但是,有一些解决方法可能是可以接受的。

一种方法(尽管有点厚脸皮)是让下拉列表展开以一次显示更多项目。默认情况下,元素一次只显示一个列表项,但您可以使用其大小属性使其每次显示多个列表项。使用这种方法,您可以在用户将鼠标悬停在DDL上(​​以模拟展开它)时调整大小属性,然后在鼠标关闭时返回到大小(将其返回到“常规”DDL) 。这里是一个例子:

<asp:DropDownList runat="server" ID="ddlColors" 
        onmouseover="this.size=3;" 
        onmouseout="this.size=1"> 
    <asp:ListItem>Red</asp:ListItem> 
    <asp:ListItem>Green</asp:ListItem> 
    <asp:ListItem>Blue</asp:ListItem> 
</asp:DropDownList> 

另一个选择是使用JavaScript创建一个伪选择。总之,您使用脚本和DOM操作和CSS的组合来获得满足您需求的用户界面。

快乐编程!

+0

我需要展开它的数据绑定列表,而不是鼠标悬停事件。 .Attributes属性如何为此工作? – dsteele 2010-08-27 21:39:27

+0

请注意,这不会打开'