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

标签 c# asp.net

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

对于可能会遇到这个问题的人..

我正在为 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>

关于c# - 如何在没有回发或更新面板的情况下获取 DropdownList 的 SelectedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14479548/

相关文章:

注入(inject)到我的 View 中时无法识别 jQuery 脚本 (.cshtml)

c# - 无法加载资源:https://www.google-analytics.com/ga.js 中的 net::ERR_CONNECTION_RESET

c# - 使用 ExecuteNonQuery 运行存储过程不是创建我的表,而是在 SSMS 中执行 sp 时创建表

c# - .NET 中事件的返回类型是什么?

c# - WebRequest 和协议(protocol)无关的 URL

asp.net - 使用 F5 刷新页面时再次调用按钮单击事件

c# - 不区分大小写如何下单

c# - mvc5 全局认证检查

C# 通过 SSH.NET 发送 Ctrl+Y

c# - 在asp.net中提交后显示错误的正确方法是什么?