如何在没有回发或更新面板的情况下获取DropdownList的SelectedValue

pat*_*anb 1 c# asp.net

我有一个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)

对于那些可能会遇到这种情况的人来说......

我被设置EnableViewStateTrueDropDownList,所以页面后刷新SelectedValue了迷路.删除后EnableviewState设置AutoPostBackTure正常工作...

Abd*_*Haj 5

你可以使用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)