2012-02-09 19 views
0

私のWebアプリケーションでは、ドロップダウンリストとテキストボックスがあります。ドロップダウンリストで特定の値のテキストボックスを無効にしたいドロップダウンリストのselectedIndexChangedイベントのコードを書きました。ドロップダウンリストのAutoPostBackプロパティをtrueにしました。ドロップダウンリストのSelectedIndexプロパティ

しかし、アプリケーションを実行しているときにドロップダウンから値を選択すると、突然初期値に変更されます。したがって、常にSelectedIndexの値は0になります。これで何ができますか?

+0

コード.. –

答えて

0

onPageLoadイベントの最初のドロップダウンリストでは、ポストバックかどうかをチェックし、ポストバックかどうかを確認する必要があります。

protected void OnLoad(object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
     // init dropdownlist here 
    } 
} 
+0

私はこれをあなた自身のためのルールにすることをお勧めします:あなたが動的に作成するか、そうでなければ初期化するたびに(例えば、そのプロパティを設定)、サーバーコントロール、OnInitイベント内でそれを行うために最善を尽くし、いつでも(ポストバック状態に関係なく)行います。 OnLoadイベントの目的は、すでにロードされているコントロールを操作する方法をコーダーに提供することです。ここでは、そのロードはOnInit内で行われる必要があります。 –

0

これを達成するためにポストバックをやっていることは、過度で遅いです。そのドロップダウンで特定のオプションが選択されている場合、テキストボックスを無効にするには、client-script(javascript)を使用する必要があります。プレーンなjsかjqueryかその他のものを使用しているかどうかによって、その実装は異なります。

0

テキストボックスのクライアント側を非常に簡単に無効にして、AutoPostBackプロパティをドロップダウンリストに追加する理由を説明します。

このプロパティを追加して何か他のことをしたい場合は、より詳細な情報を入力してください。それはあなたが下記のコードに従うことができ、クライアント側を無効にするようにするに

HTML:

<select name="ddlSample" id="ddlSample"> 
    <option value="1">Enable text box</option> 
    <option value="2">Disable text box</option> 
</select> 
<br /> 
<input name="txtCode" type="text" id="txtCode" /> 

はJQuery:必要な例による

$("#ddlSample").change(function(){ 
    if($(this[this.selectedIndex]).val()=="1") 
    { 
     $("#txtCode").attr("disabled",false); 
     $("#txtCode").focus();  
    }  
    else 
    { 
     $("#txtCode").attr("disabled",true); 
    }  
}); 
関連する問題