1

我有一个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 在页面刷新时设置,我的 DropDownList 根本不绑定,正如您在 Page_Load 方法中看到的那样,它不会调用BindStoresList()方法。

***** ANSWER *****

对于可能会陷入困境的人..

我正在为 设置EnableViewStateTrue所以DropDownList在页面刷新后SelectedValue迷路了。删除EnableviewState并设置AutoPostBackTure正常工作后...

4

3 回答 3

6

您可以使用JavaScript. 设置OnChangeDropDownList 的属性以调用 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>
于 2013-01-23T12:28:08.667 回答
1

您必须AutoPostBack=True为下拉菜单设置,它会自动将呼叫发送到服务器端,而无需额外的按钮。

于 2013-01-23T12:18:51.947 回答
1

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

祝你好运。

于 2013-01-23T12:31:05.147 回答