在DropDownlist中写入文本而不创建新项目

时间:2013-08-01 10:42:22

标签: c# javascript asp.net drop-down-menu

我有一个包含5个项目的DropDownlist。我想在开始时使用DropDownlist“Select”编写,当DropDownlist打开时让它消失,再也不显示它。 我设法通过添加新项目并删除它来实现它,但是有没有办法在不使用Item.Add(new ListItem .....)的情况下完成它?

此外,我尝试禁用新项目(它也会没问题),但它完全隐藏“选择”,除非我点击DropDownlist,否则我需要看到它。

$('#<%=ddl.ClientID%>').focus(function() {           
        var hasValue = '<%=IfHasValue()%>';        
        if (hasValue == 'True')
        {
            if(!removed){
                var index = $('#<%=ddl.ClientID%>').get(0).selectedIndex;
                $('#<%=ddl.ClientID%> option:eq('+index+')').remove();
                removed = true;
            }
        }

此代码正常工作但dropdownlist不想在第一次点击时打开(当项目正在删除时),我应该再次点击打开它,看看项目是否被删除(它是)。

你能给我一些建议吗?

对不起,我的英语不好。

3 个答案:

答案 0 :(得分:0)

所以你可以,如果你加载它,用select替换你的第一个项目。 将特殊值加载到DDL后执行以下操作:

Session["ReplacedItem"] = DropDownList.Items[0].Text; // Store your old Text here
DropDownList.Items[0].Text = "Select";

然后添加OnClick功能:

DropDownList.Attributes.Add("onclick", "return ChangeTextBack()")

然后在你的aspxcode中添加:

<script language="javascript" type="text/javascript">

function ChangeTextBack() {

var RI = '<%= Session["ReplacedItem"].ToString() %>';var 
select=document.getElementById("DropDownList1");
select.options[0].text=RI;
return false;

}

答案 1 :(得分:0)

在加载页面时在客户端上的options下拉列表集合的开头添加新项目,并在onchange事件中检查集合中是否存在此项目,然后将其删除。

您可以使用$get("<%= DropDowwnlist.ClentID%>")

在客户端上获取DropDownlist

答案 2 :(得分:0)

首先使用AppendDataBoundItems声明您的下拉列表为true:

<asp:dropdownlist id="ddl" runat="server" AppendDataBoundItems="true" >
    <asp:ListItem Value="0" Text="[ Select ]" Selected="True"></asp:ListItem>
</asp:dropdownlist>

现在通常在代码隐藏中进行绑定。呈现页面后,它将使用“select”选项作为第一个选项。

现在,使用jQuery或Javascript:

在下拉列表中绑定“click”事件
$('#ddl').click(function() {
    // Either pre-select the next option before removing
    //$("#ddl")[0].selectedIndex = 1;

    $("#ddl option[value='0']").remove();

    // Or select the next option after removal 
    $("#ddl")[0].selectedIndex = 0;
});

这将删除“选择”选项(值“0”)。每次单击它将尝试删除值为“0”的选项。第一次,它会找到并删除。随后的时间,它将找不到任何此类选项,因此不会做任何事情。

确保为此特定选项提供唯一值。

修改

或者:您可以绑定“焦点”,以便在通过点击注册鼠标按钮之前进行此删除。

$('#ddl').focus(function() {
    $("#ddl")[0].selectedIndex = 1;
    $("#ddl option[value='0']").remove();
});

这是一个工作小提琴:http://jsfiddle.net/kne6K

请务必先预先选择下一个选项。