有幾種方法來處理它。
你可能會需要使用<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