如何在没有回发或更新面板的情况下获取下拉列表的选定值
本文关键字:情况下 获取 下拉列表 更新 | 更新日期: 2023-09-27 17:55:17
我有一个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;
}
我不需要任何类型的jquery东西,因为我将添加网格视图,它根据下拉列表的值进行绑定。
****** EDITS *******
如果我设置AutoPostBack=True
那么在页面刷新时,我的 DropDownList 根本不绑定,正如您在Page_Load方法中看到的那样,它不会调用BindStoresList()
方法。
***** ANSWER *****
对于可能陷入困境的人..
我将EnableViewState
设置为DropDownList
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>
您必须为下拉列表设置AutoPostBack=True
,它会自动将调用发送到服务器端,而无需额外的按钮。
您可以使用Javascript执行此操作,处理DropDownList的OnChange事件并设置所需的标签文本
<asp:DropDownList ID="ddl" runat="server" onchange="ddl_change(this.value)"/>
<script language="javascript" type="text/javascript">
function ddl_change(value)
{
var lbl = document.getElementById('<%= yourlabel.ClientID %>');
lbl.value = value;
}
</script>
祝你好运。