2012-01-19 17 views
2

いくつかのカスケードドロップダウンを作成しようとしています。私は、C#のページを介して負荷が正常に私の状態をロードしている。私はちょうど都市をロードするために発砲するものを得ることができないようです。都市の後、私は別のドロップダウンを追加するつもりですが、私はこの作業をしたらそれを理解することができます。C#ASP.NETのカスケードドロップダウン

Chromeのエラーで「Default.aspx/LoadCitiesByState 500(内部サーバーエラー)」が発生しました。

C#

protected void LoadStates() 
{ 
    // Populate State dropdown box 
    ListItem li = new ListItem(); 
    li.Value = "0"; 
    li.Text = "Select One"; 

    DataSet dsState = SharedData.GetStates(); 
    ddlState.DataSource = dsState.Tables[0].DefaultView; 
    ddlState.DataValueField = "ab"; 
    ddlState.DataTextField = "name"; 
    ddlState.DataBind(); 
    ddlState.Items.Insert(0, li); 
} 


[WebMethod] 
protected void LoadCitiesByState(string state) 
{ 
    ListItem li = new ListItem(); 
    li.Value = "0"; 
    li.Text = "Select One"; 

    DataTable dt = new DataTable(); 
    dt = SharedData.GetCities(state); 
    ddlCity.DataSource = dt.Rows[0].Table.DefaultView; 
    ddlCity.DataValueField = "ListCity"; 
    ddlCity.DataTextField = "ListCity"; 
    ddlCity.DataBind(); 
    ddlCity.Items.Insert(0, li); 
} 

マークアップ

<asp:DropDownList ID="state" runat="server" MaxLength="50" Style="width: 200px;" /> 

<asp:DropDownList ID="city" runat="server" MaxLength="50" Style="width: 200px;" /> 



function loadCities(selectedItem) { 
      $.ajax({ 
       type: "POST", 
       url: "Default.aspx/LoadCitiesByState", 
       data: "selectedItem", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       async: true, 
       success: function Success(data) { 
        alert(selectedItem); 
       } 
      }); 

答えて

0

私はあなたがasp:DropDownListautopostbackに真を設定していない参照してください。

+0

したいですか?私はページを更新しないようにしようとしています。 –

+0

間違いなくページをリロードします。ページ全体をリロードする必要がない場合は、AJAXを使用できます。 scriptManagerを持って、その中にドロップダウンリストを使用します。このブログでは、グリッドビュー内にカスケード表示されています。同じロジックをプログラムに適用することもできます。 http://csharpdotnetfreak.blogspot.com/2009/02/ajax-cascading-dropdownlist-database.html また、MSDN(http://msdn.microsoft.com/en-us/library/ie/)を参照することもできます。 bb399001.aspx)example – Vinay

+0

私はあなたのための良い例を見つけました http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx – Vinay

1

個人的には、カスケードドロップダウンは、JavaScriptを使用するのではなく(ASP.NETを扱う場合)、サーバー側のコードで処理するのが最適です。

基本モデルは、状態に対してautoPostBack = trueであり、onで選択されたインデックスに変更されたハンドラが、次に都市の項目を変更します。

完全なページリフレッシュを望んでいない場合(私はこれをあなたのせいにしていません)、UpdatePanelとvoilaの2つのドロップダウンをラップして、AJAXリクエストのすべてを処理します。あなたのために。

はい、あなたがここでやっているように独自のロールを作っているだけでなく、はるかに速く/簡単/安全で、通常は十分です(UpdatePanelを使用する場合)。

+0

+1 UpdatePanelは私の考えでも一番簡単でした。 – Aligned

0

これはポストバックを使用して最も簡単に行うことができますが、特にクライアントサイド全体を行うことは特に複雑ではありません。実際には動作する更新パネルに入りたくないのです。

問題は、このようにあります。

data: "selectedItem", 

私は完全に右の呪文が何であるかわからないんだけど、私はそれはそれではないかなり確信しています。

この記事は参考になりますけれどもページのリロードを行う

http://www.mikesdotnetting.com/Article/97/Cascading-DropDownLists-with-jQuery-and-ASP.NET

関連する問題