如何在没有回发或更新面板的情况下获取下拉列表的选定值

本文关键字:情况下 获取 下拉列表 更新 | 更新日期: 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>

祝你好运。