繁体   English   中英

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

[英]How to get SelectedValue of DropdownList without postback or updatepanel

我有一个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的东西,因为我要添加的gridview绑定到下拉列表的值。

****** EDITS *******

如果我将AutoPostBack=True设置AutoPostBack=True则在页面刷新时,我的DropDownList完全不会绑定,正如您在Page_Load方法中看到的那样,它将不会调用BindStoresList()方法。

***** ANSWER *****

对于那些可能会为此卡住的人。

我将DropDownListEnableViewState设置为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>

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM