Response.Redirect, держите tabcontainer на активной вкладке - PullRequest
0 голосов
/ 05 октября 2011

Мой вкладочный контейнер VB.net должен оставаться на активной вкладке, когда каждая отправка проходит через response.redirect.

Как мне этого добиться? Мне нужен этот response.redirect, потому что он покажет, что было добавлено в контейнер основной вкладки.

<asp:TabContainer runat="server" ActiveTabIndex="0" Height="200px" 
Width="175px" ScrollBars="Auto" EnableTheming="True" Font-
Underline="False" ID="TabContainer2" EnableViewState="False" 
Style="float:right; padding-left: 110px; margin-bottom: 340px;" 
OnActiveTabChanged="TabContainer1_ActiveTabChanged">


Protected Sub TabContainer1_ActiveTabChanged(ByVal sender As Object, 
ByVal e As EventArgs)
    ViewState("ActiveTabIdx") = TabContainer1.ActiveTabIndex
End Sub


Protected Sub SubmitCompanies_Click(ByVal sender As Object, ByVal e 
As System.EventArgs) Handles SubmitCompanies.Click
*****there is more code here but for this question, it's not necessary so it has been 
omitted*****
    Response.Redirect(Request.RawUrl)
    ViewState("ActiveTabIdx") = TabContainer1.ActiveTabIndex


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load
ProductID.Value = Request.QueryString("id")
Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)
If Not ViewState("ActiveTabIdx") Is Nothing Then
    TabContainer1.ActiveTabIndex = Convert.ToInt32(Session("ActiveTabIdx"))
End If
End Sub

Ответы [ 4 ]

1 голос
/ 05 октября 2011

ViewState не будет работать с Response.Redirect. В вашей текущей реализации я бы использовал QueryString или Session для хранения ссылки на активную вкладку.

Response.Redirect(String.Format("{0}?tab={1}", Request.RawUrl, TabContainer1.ActiveTabIndex)) 
0 голосов
/ 05 октября 2011

Я думаю, что вашим решением будет использование jquery для сохранения выбранной вкладки в файле cookie или в любом другом месте, когда пользователь нажимает на вкладку, а также использование jquery для извлечения старой выбранной вкладки из файла cookie и установки выбранной вкладки с помощью jquery.

0 голосов
/ 05 октября 2011

Как я вижу, вы присваиваете значение viewstate

ViewState("ActiveTabIdx") = TabContainer1.ActiveTabIndex

после

Response.Redirect(Request.RawUrl)

Этот код недоступен.

Первое замечание: ViewState не переносится с новым запросом (вызывая метод Redirect, вы запускаете новый запрос).Решение заключается в использовании строки запроса.Добавьте активную вкладку в качестве параметра в конце вашего RawUrl и затем прочитайте его при загрузке страницы.

Надеюсь, это поможет,

Kris

0 голосов
/ 05 октября 2011

Сохраните индекс активной вкладки, скажем, в переменной Session и в вашей проверке события Page_Load, если Session("ActiveTabIdx") не Nothing или пусто, затем установите TabContainer1.ActiveTabIndex в значение Session("ActiveTabIdx").Примерно так:

    Protected Sub SubmitCompanies_Click(ByVal sender As Object, ByVal e 
As System.EventArgs) Handles SubmitCompanies.Click
       'Rest of code
        Session("ActiveTabIdx") = TabContainer1.ActiveTabIndex
        Response.Redirect(Request.RawUrl)
    End Sub

    Protected Sub Page_Load(ByVal Sender As Object, ByVal e as System.EventArgs) Handles Page.Load
         If not ViewState("ActiveTabIdx") is Nothing Then
                TabContainer1.ActiveTabIndex = Convert.ToInt32(Session("ActiveTabIdx"))
         End If
    End Sub

Между вашими SubmitCompanies_Click вы перенаправляете пользователя перед установкой значения переменной ViewStat!

...