我有一个 DropDownList
,我在页面加载时绑定(bind)它。我没有任何按钮或任何东西。用户在下拉列表中选择值后,我需要在标签中显示该值。我不确定为什么这不起作用。请帮忙。
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;
}
我不需要任何类型的 jquery 东西,因为我要添加根据下拉列表的值绑定(bind)的 gridview..
****** EDITS *******
如果我设置 AutoPostBack=True
然后在页面刷新时我的 DropDownList 根本没有绑定(bind),正如您在 Page_Load 方法中看到的那样,它不会调用 BindStoresList()
方法。
***** ANSWER *****
对于可能会遇到这个问题的人..
我正在为 DropDownList
将 EnableViewState
设置为 True
,因此在页面刷新后 SelectedValue
得到丢失的。删除 EnableviewState
并将 AutoPostBack
设置为 Ture
后工作正常...
最佳答案
您可以使用 JavaScript
。为您的 DropDownList 设置 OnChange
属性以调用 JS 函数并在那里更改您的标签文本:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindStoresList();
storeDDList.Attributes["onChange"] = "ChangeLabelText();";
}
}
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>
关于c# - 如何在没有回发或更新面板的情况下获取 DropdownList 的 SelectedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14479548/