1
C#으로 사용자 지정 드롭 다운 목록을 만드는 중입니다. "ul"각 항목을 "li"으로 작성하고 jQuery에서 클릭을 감지하고 실제 셀렉션을 업데이트합니다.이를 숨기는 클래스로 렌더링합니다. 나는 분명히 내가 뭘 잘못하고 있는지 모른다. DropDownList로내 사용자 지정 드롭 다운 목록에 제출시 선택한 인덱스 값이 없습니다
에서 사용자 지정 컨트롤 상속은C#을 방법을 렌더링
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가 클라이언트 측의 선택을 변경하기 때문에,이 정보는 아마 서버로 전달되지 않습니다. –