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 のようなものは必要ありません。

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

ページの更新時に設定AutoPostBack=True すると、Page_Load メソッドでわかるように、DropDownList はまったくバインドされず、メソッドは呼び出されませんBindStoresList()

***** ANSWER *****

これに行き詰まるかもしれない人々のために..

の を に設定しEnableViewStateTrueいたDropDownListので、ページの更新後SelectedValueに が失われていました。を削除し、正常に動作するようEnableviewStateに設定AutoPostBackした後Ture...

4

3 に答える 3

6

使用できます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>
于 2013-01-23T12:28:08.667 に答える
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 に答える
1

ドロップダウンに を設定するAutoPostBack=True必要があります。追加のボタンを必要とせずに、サーバー側に呼び出しが自動的に送信されます。

于 2013-01-23T12:18:51.947 に答える