我有一个DropDownList我绑定页面加载.我没有任何按钮或任何东西.一旦用户选择下拉列表中的值,我需要在标签中显示该值.我不知道为什么这不起作用.请帮忙.
public string SelectedStore { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindStoresList();
}
}
protected void BindStoresList()
{ storeDDList.AppendDataBoundItems = true;
storeDDList.Items.Add(new ListItem("Select store", "-1"));
TempCollection stores = TempDataSource.LoadForCriteria("ALL", "Code ASC");
storeDDList.DataSource = stores;
storeDDList.DataTextField = "DisplayName";
storeDDList.DataValueField = "Code";
storeDDList.DataBind();
}
protected void storeDDList_SelectedIndexChanged(object sender, EventArgs e)
{
SelectedStore = storeDDList.SelectedValue.ToString();
selectedItem.Text = SelectedStore;
}
Run Code Online (Sandbox Code Playgroud)
我不需要任何类型的jquery东西,因为我要添加gridview,它取决于下拉列表的值...
****** EDITS *******
Run Code Online (Sandbox Code Playgroud)
如果我设置AutoPostBack=True 然后页面刷新我的DropDownList根本没有绑定,你可以在Page_Load方法中看到,它不会调用BindStoresList()方法.
***** ANSWER *****
Run Code Online (Sandbox Code Playgroud)
对于那些可能会遇到这种情况的人来说......
我被设置EnableViewState到True了DropDownList,所以页面后刷新SelectedValue了迷路.删除后EnableviewState设置AutoPostBack为Ture正常工作...
你可以使用JavaScript.设置OnChangeDropDownList 的属性以调用JS函数并在那里更改标签文本:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindStoresList();
storeDDList.Attributes["onChange"] = "ChangeLabelText();";
}
}
Run Code Online (Sandbox Code Playgroud)
JS 功能:
<script type="text/javascript">
function ChangeLabelText() {
var lbl = document.getElementById("<%=lbl.ClientID%>");
var ddl = document.getElementById("<%=ddl.ClientID%>");
lbl.innerHTML = ddl.options[ddl.selectedIndex].text;
}
</script>
Run Code Online (Sandbox Code Playgroud)