2012-04-13 9 views
0

コーダー、のasp.netのDropDownListのAutoPostBack URLの問題

は、私は真のAutoPostBack =とasp.netのDropDownListコントロールを持っています。コントロールは、defautlページURLの/Default.aspxにあるhtml/javascriptタブコンテナに配置されます。ドロップダウンリストと対話してAutoPostBackを起動するには、ページのURLを/default.aspx#content-tab-1-2-tabに変更するタブ項目#2を選択する必要があります。これは、ドロップダウンリストがタブ項目#2に配置され、ユーザーが/default.aspxを訪問しても表示されないためです。

問題は、ページがポストバックするたびに、ドロップダウンリストの選択が変更されたため、ページが/default.aspx URLで、/default.aspx#content-tab-1-2-tabではなく、 URL。これにより、ドロップダウンリストが表示されなくなり、ユーザーはタブ項目#2をクリックしてドロップダウンリストと再び対話する必要があります。

ドロップダウンリストのAutoPostBackアクションを強制的に/default.aspx#content-tab-1-2-tabを指すようにし、/default.aspxを指さないようにしますか?ここ

とは、私のコードからの抜粋です

protected void Page_Load(object sender, EventArgs e) 
{ 
    DropDownList_City.Enabled = false; 
    DropDownList_District.Enabled = false; 


    GMap_main.addControl(new GControl(GControl.extraBuilt.MarkCenter)); 
    GMap_main.addControl(new GControl(GControl.extraBuilt.TextualCoordinatesControl)); 
    GMap_main.enableGoogleBar = true; 
    GMap_main.Language = "ar"; 


    if (!IsPostBack) 
    { 
     var countries = from x in db.Countries select x.name_ar; 

     //BINDING THE DROP DOWN LIST 
     DropDownList_Country.DataSource = countries; 
     DropDownList_Country.DataBind(); 

     DropDownList_City.Enabled = false; 
     DropDownList_District.Enabled = false; 
    } 

} 

/// <summary> 
/// EVENT HANDLING FOR THE DROP DOWN LIST 
/// </summary> 
/// <param name="sender"></param> 
/// <param name="e"></param> 
protected void DropDownList_Country_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var city = from x in db.Cities where x.Country.name_ar == DropDownList_Country.SelectedValue select x.name_ar; 

    DropDownList_City.DataSource = city; 
    DropDownList_City.DataBind(); 

    DropDownList_City.Enabled = true; 

} 

ありがとうございます。

+0

選択に基づいてユーザーをリダイレクトしていますか?ポストバックはURLを変更すべきではありません。 – Khan

+0

いいえ、私はいつでもユーザーの選択に関係なくユーザーをリダイレクトします。 – ealshabaan

+0

それは自分のポストバックではなく、あなたのリダイレクトです。 – Khan

答えて

1

URLのフラグメント部分(#の後ろと#を含む部分)がサーバーに送信されないため、この問題を解決するのにもっと時間がかかるようです。タブを変更したときに隠しフィールドの値を設定するjavascriptをいくつか追加する方法があります。その後、それがポストバックするとき、あなたはあなたがいたページを知り、あなたのリダイレクトの一部としてフラグメントを含めることができます。

+0

問題はまだ私は自動ポストバックのURLを変更することはできません。したがって、ドロップダウンリストが/default.aspx#content-tab-1-2-tabに置かれていることは分かっていますが、ポストバックURLを強制的に/default.aspx#content-tab-1-2-tabにすることはできません。 /default.aspxに常にポストバックする 選択が変更された後にResponse.Redirect( "/ default.aspx#content-tab-1-2-tab")を使用すると、選択したすべてのデータが失われます。ドロップダウンリスト。 – ealshabaan

+0

あなたが望むようにURLにポストバックすることはできません。#とその後のすべては、サーバへのクエリに含まれません。純粋にクライアント側です。ブラウザは単にそれを送信しません。問題を別の方法で修正する必要があります。 –

関連する問題