1
我在C#中創建了一個自定義的Dropdownlist,看起來更好。我正在寫出一個「ul」,每個項目都是「li」,並讓jQuery檢測到點擊並更新實際選擇,我使用隱藏它的類進行渲染。顯然,我不知道我做錯了什麼。從DropDownList中我的自定義Dropdownlist在提交時沒有選定索引的值
定製控件繼承C#Render方法
protected override void Render(HtmlTextWriter writer)
{
EnsureChildControls();
writer.WriteLine("<div class='fs_dropdownlist'>");
writer.WriteLine("<label>" + this.SelectedItem.Text + "</label>");
writer.WriteLine("<ul>");
foreach (ListItem item in this.Items)
{
if (item.Selected)
writer.WriteLine("<li class='selected'>" + item.Text + "</li>");
else
writer.WriteLine("<li>" + item.Text + "</li>");
}
writer.WriteLine("</ul>");
writer.WriteLine("<div class='hidden'>");
base.Render(writer);
writer.WriteLine("</div>");
writer.WriteLine("</div>");
}
jQuery的點擊功能
$(".fs_dropdownlist li").on("click", function() {
$(this).addClass("selected");
var selectedText = $(this).text();
var div = $(this).closest(".fs_dropdownlist");
var ddl = div.find("select");
var lbl = div.find("label");
lbl.text(selectedText);
ddl.val(selectedText); /* Try to set the value on the select tag */
});
所以,問題是DropDownList中的該的SelectedIndex屬性始終-1。我錯過了什麼?
注意
我剛剛發現它似乎並沒有對回發的任何項目。
我想你必須在'foreach(this.Items中的ListItem項目)...'中設置'SelectedIndex'。由於Javascript改變了客戶端的選擇,這些信息可能不會傳遞到服務器。 –