我想在ListBox
中选择多个项目,但浏览器要求用户按CTRL选择多个项目,否则只选择一个项目。
我想在不按CTRL的情况下选择多个项目,我不想使用CheckBoxList
。有没有更好的方法呢?使用纯javascript,或JQuery或Codebehind。
(我已将SelectionMode="Multiple"
属性添加到ListBox
控件)
代码:
<asp:ListBox ID="ListBox1" runat="server" Height="210px" Width="203px" SelectionMode="Multiple">
<asp:ListItem>1000</asp:ListItem>
<asp:ListItem>2000</asp:ListItem>
<asp:ListItem>4000</asp:ListItem>
<asp:ListItem>4000</asp:ListItem>
<asp:ListItem>5000</asp:ListItem>
<asp:ListItem>6000</asp:ListItem>
</asp:ListBox>
答案 0 :(得分:4)
参考:Making a standard ASP.NET listbox do multiselect without holding Ctrl
只需将列表框更改为
即可<asp:ListBox ID="ListBox1" runat="server" Height="210px" Width="203px" SelectionMode="Multiple" onclick="ListBoxClient_SelectionChanged(this, event);">
<asp:ListItem>1000</asp:ListItem>
<asp:ListItem>2000</asp:ListItem>
<asp:ListItem>4000</asp:ListItem>
<asp:ListItem>4000</asp:ListItem>
<asp:ListItem>5000</asp:ListItem>
<asp:ListItem>6000</asp:ListItem>
</asp:ListBox>
并在<script>
标记
<script type="text/javascript" language="javascript">
var selectedClientPermissions = [];
function pageLoad() {
var ListBox1 = document.getElementById("<%= ListBox1.ClientID %>");
for (var i = 0; i < ListBox1.length; i++) {
selectedClientPermissions[i] = ListBox1.options[i].selected;
}
}
function ListBoxClient_SelectionChanged(sender, args) {
var scrollPosition = sender.scrollTop;
for (var i = 0; i < sender.length; i++) {
if (sender.options[i].selected) selectedClientPermissions[i] = !selectedClientPermissions[i];
sender.options[i].selected = selectedClientPermissions[i] === true;
}
sender.scrollTop = scrollPosition;
}
</script>