我有一个从数据源填充的DropDownList。绑定后,我在列表顶部放置一个空字段,使其对用户显示为空白(创建一种“默认项目”)。我在处理SelectedIndexChanged事件时有一些代码,但如果用户要选择空的ListItem,则不需要执行它。
这是我的代码:
的.aspx
<asp:DropDownList ID="dropDownList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="dropDownList_SelectedIndexChanged">
</asp:DropDownList>
C#Codebehind添加空白ListItem
dropDownList.Items.Insert(0, new ListItem(String.Empty, String.Empty));
dropDownList.SelectedIndex = 0;
由于当用户只点击此特定索引时我不需要页面进行回发,因此我想完全禁用回复只是此列表项。这甚至可能吗?如果是这样,怎么样?
答案 0 :(得分:3)
设置disabled="disabled"
,这将使项目无法选择(而不是回发)
<asp:DropDownList runat="server" ID="dddl">
<asp:ListItem Text="" disabled="disabled" Selected="True"></asp:ListItem>
<asp:ListItem Text="test"></asp:ListItem>
</asp:DropDownList>
或者,如果您希望能够选择第一个(空)项而不进行回发,请执行以下操作:
<asp:DropDownList runat="server" ID="dddl" AutoPostBack="true" onchange="if(this.selectedIndex == 0)return false;">
<asp:ListItem Text="" Selected="True"></asp:ListItem>
<asp:ListItem Text="test"></asp:ListItem>
</asp:DropDownList>
答案 1 :(得分:2)
您可以添加必填字段验证程序。然后将DropDownList的CausesValidation属性设置为true。这将阻止回发并提供最终用户的反馈。
<asp:DropDownList ID="dropDownList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="dropDownList_SelectedIndexChanged" CausesValidation="true">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="rfvDropDownList" runat="server" ErrorMessage="Must select a value!" ControlToValidate="dropDownList" />
答案 2 :(得分:1)
你能否添加一个onChange属性来运行一个JS函数,在回发之前检查该值是否为空?
即
dropDownList.Attributes.Add("onChange", "javascript: return ddlChange()");
function ddlChange
{
if(document.getElementById("<%= dropDownList.ClientID %>").value == "")
return false;
return true;
}