我有一个包含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不想在第一次点击时打开(当项目正在删除时),我应该再次点击打开它,看看项目是否被删除(它是)。
你能给我一些建议吗?
对不起,我的英语不好。答案 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%>")
答案 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
请务必先预先选择下一个选项。