1

私はaspx次のコードからファイル内の値を選択する必要があるASP.netアプリケーションに取り組んでいます:

<td align="right"> Signal </td>
    <td> <select id = "signal" name = "signal">
    <%
        SqlDataReader Dr = Signal(); 
        while (Dr.Read())
        {
            Response.Write("<option> " + Dr["SignalID"].ToString() + " </option>");
        }
        Dr.Close();
    %>
        </select>
    </td>

    <td align = "right"> Data </td>
    <td> <input type="textarea" id = "data"/> Data need on the basis of above selected data </td>

WhereSignal()メソッドはいくつかのデータを返しています。たとえば、次のように返されます。

2005, 2006, 2007

上記のデータの生コードは次のとおりです。

<select>
 <option value="2005">Volvo</option>
 <option value="2006">Saab</option>
 <option value="2007">Mercedes</option>
</select>

しかし、私が問題に直面しているのはaspx.cs、フォームを送信せずに、この選択した変数を同じファイルに戻したいということです。テキスト領域にデータを表示できるようにします。

例えば:

ユーザーがページを開くとsome.aspx、フォームがページに表示されます。デフォルトでは、その情報ロード2005に基づいて表示されます。text area will

ユーザーが を選択する2006と、そのデータに基づいてtext area動的にロードされます。

Ajax と Jquery を使用できることはわかっていますが、Jquery and Ajax.

4

1 に答える 1

2

解決策 1: Microsoft AJAX ToolkitのDynamicPopulate コントロールを使用する- 実装が非常に簡単

解決策 2:ご指摘のとおり、 jQuery AJAX APIを使用します。

どちらのソリューションにもWebMethodが必要です。

[System.Web.Services.WebMethod(BufferResponse=false)]
public string GetTextAreaData(int selectedIndex)
{
   //implementation code
}

解決策 1 は非常に単純です。例を投稿することさえしません。上記のリンクをたどるだけで、すべて設定されているはずです。しかし、私はこれを言います.ToolkitScriptManagerに関連するパフォーマンスの調整を読んでください.リリースモードへの設定、スクリプトの結合など..

2 番目の解決策も非常に簡単ですが、結果を自分で (一種の) 解析する必要があります。jQuery は過去数年から大きく進歩しており、もはや怖くはありません。

OnChange イベント ハンドラー (JS メソッド) を作成し、ドロップダウン リストに追加します。ハンドラー内で、次のように呼び出します (注: これはテストされていないコードであり、単純なコピー/貼り付けでは機能しない可能性がありますが、アイデアは理解できます)。

function GetTextAreaData() { 
    var data = this.selectedIndex; // or whatever you want to send to the server
    var options = { 
        type: "POST", 
        url: "Default.aspx/GetTextAreaData", 
        data: "{selectedIndex:" + data + "}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function(msg) { 
            $('#textAreaId').val(msg);
        } 
    }; 
    $.ajax(options); 
}
于 2012-08-16T13:40:10.940 に答える