0

コーダー、

AutoPostBack=Trueのasp.netドロップダウンリストコントロールがあります。コントロールは、defautlページのhtml/javascriptタブコンテナに配置されます。URLは/Default.aspxです。ドロップダウンリストを操作してAutoPostBackを起動するには、ユーザーはページのURLを/default.aspx#content-tab-1-2-tabに変更するタブアイテム#2を選択する必要があります。これは、ドロップダウンリストがタブアイテム#2に配置されており、ユーザーが/default.aspxにアクセスしても表示されないためです。

ここで問題となるのは、ドロップダウンリストでの選択の変更により、ページがポストバックされるたびに、ページが/default.aspx#content-tab-1-2-tabURLではなく/default.aspxURLを指すようになることです。これにより、ドロップダウンリストが表示されなくなり、ユーザーはタブアイテム#2をクリックしてドロップダウンリストを再度操作する必要があります。

ドロップダウンリストのAutoPostBackアクションが/default.aspxではなく/default.aspx#content-tab-1-2-tabを指すようにするにはどうすればよいですか?

そして、これが私のコードの抜粋です

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;

}

ありがとうございました。

4

1 に答える 1

1

URLのフラグメント部分(#の後の部分)はサーバーに送信されないため、この問題を解決するのに、思ったよりも苦労することになります。これを修正する1つの方法は、タブを変更するときに非表示フィールドの値を設定するjavascriptを追加することです。その後、投稿すると、現在のページがわかり、リダイレクトの一部としてフラグメントを含めることができます。

于 2012-04-13T20:14:42.107 に答える