0

编码员,

我有一个带有 AutoPostBack=True 的 asp.net 下拉列表控件。该控件放置在默认页面 URL 为 /Default.aspx 的 html/javascript 选项卡容器上。为了与下拉列表交互并触发 AutoPostBack,用户必须选择选项卡项#2,它将页面的 URL 更改为 /default.aspx#content-tab-1-2-tab。这是因为下拉列表放置在选项卡项 #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;

}

谢谢你。

4

1 回答 1

1

因为 URL 的片段部分(包括 # 之后的部分)没有发送到服务器,所以解决这个问题的时间比看起来应该的要难。解决它的一种方法是添加一些 javascript,当您更改选项卡时设置隐藏字段的值。然后,当它回发时,您会知道您所在的页面,并且您可以将片段作为重定向的一部分包含在内。

于 2012-04-13T20:14:42.107 回答