有几种方法来处理它。
你可能会需要使用<asp:BulletedList>
,而不是一个列表框的
当您运行的页面,你会发现BulletList呈现到HTML作为一个<ul>
或<ol>
取决于BulletStyle选择,而列表框呈现到<select>
此外,让您的生活更轻松,在任何想要让jQuery/jQueryUI采取行动的asp控件上,将它的ClientIDMode属性设置为Static。
而且,像列表框,BulletedList中也是一个数据绑定控件,所以你会填充列表服务器端,并使用jQueryUI的客户方
例变换其外观:
<asp:BulletedList ID="BulletedList1" runat="server" ClientIDMode="Static" BulletStyle="Numbered">
<asp:ListItem Text="X" Value="X"></asp:ListItem>
<asp:ListItem Text="Y" Value="Y"></asp:ListItem>
</asp:BulletedList>
渲染到:
<ol id="BulletedList1" style="list-style-type:decimal;">
<li>X</li>
<li>Y</li>
</ol>
你现在可以看到你将如何应用JQuery UI的可选
不幸的是,通过回发来传回客户端数据并不那么简单。我认为寻找jqueryui的ui选择的财产会很简单,但它有点牵涉其中。
回发到服务器端jQueryUI的选择数据的示例:
它需要加入HiddenField来保存所选择的项目的索引为CSV。
<asp:HiddenField ID="HiddenField1" runat="server" />
还有一些额外的jQuery代码,利用jQueryUI的可选停止事件。这是用来通过选定项的子列表中重复,以构建可解析,并通过循环索引,服务器端,要检索的项目符号列表数据的CSV:
$("#BulletedList1").selectable({
stop: function() {
//Save some Reference variables
var $SetOfSelected = $("li.ui-selected", this);
var $hf = $("#HiddenField1");
var count = $SetOfSelected.length;
// iterate through the list of selected items and build the csv
$SetOfSelected.each(function (idx) {
var i = $("#BulletedList1 li").index(this)
$hf.val((idx == 0) ? i : $hf.val() + ',' + i);
});
if (count == 0)
$hf.val("");
}
});
这并不回答我的问题,即使我会成功地将控件呈现为官方ASP。NET控件,我仍然无法获得jQuery可选用户界面中的“选定项目”。 – InnovativeDan
你是什么意思'得到'选定的项目,你的意思是传递选定的项目回到服务器? – fnostro
是的。说,我选择X&Y并点击“提交表单”,“btnSubmit_Click”代码将如何知道选择了哪些项目? – InnovativeDan