Har fått lite tid över och har huggit tag i det här igen, som aldrig löstes helt och hållet.
Försöker nu använda den data som postas i rullistan till att byta språk på portalen, men det går sådär, inte alls med andra ord.. :)
<asp:Panel ID="MyPane" runat="server">
<asp:Label ID="MyLbl" runat="server" Text="abc123" EnableViewState="true"></asp:Label>
</asp:Panel>
<telerik:RadComboBox ID="ddlFeedLanguage" runat="server" Width="200px" OnDataBound="ddlFeedLanguage_DataBound" AutoPostBack="true" OnSelectedIndexChanged="ddlFeedLanguage_SelectedIndexChanged" />
och code behind:
<script runat="server">
void Page_Load(System.Object sender, System.EventArgs e)
{
/*
if(IsPostBack){
DotNetNuke.Services.Localization.Localization.SetLanguage("sv-SE");
MyLbl.Text = ddlFeedLanguage.SelectedItem.Value;
}
*/
ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales().AllKeys;
ddlFeedLanguage.DataBind();
MyPane.Visible = true;
}
void ddlFeedLanguage_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
if (ddlFeedLanguage.SelectedItem != null)
{
int tabid = DotNetNuke.Common.Globals.GetPortalSettings().ActiveTab.TabID;
string lang = ddlFeedLanguage.SelectedItem.Value;
// Response.Redirect("/tabid/" + tabid + "/language/" + lang + "/Default.aspx");
}
}
</script>
Lite fundersam över det här med IsPostBack, tror att jag använder det på fel sätt...
Det som ska hända iaf. är att värdet från ddlFeedLanguage ska slängas in i redirecten, men så fort sidan laddas om är språket alltid en-US.
Förslag?
Löste det med:
void Page_Load(System.Object sender, System.EventArgs e)
{
if(IsPostBack){
int tabid = DotNetNuke.Common.Globals.GetPortalSettings().ActiveTab.TabID;
string lang = ddlFeedLanguage.SelectedItem.Value;
Response.Redirect("/tabid/" + tabid + "/language/" + lang + "/Default.aspx");
}
ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales().AllKeys;
ddlFeedLanguage.DataBind();
}
johaseoMedlem sedan maj 2009250 inlägg Hej Micke
Det där löste du ju snabbt själv .... hur många dotnetnuke siter är det ni skall modifiera?
Tja Johan,
Vi kör bara med en sajt.. fast just nu sitter och jag och leker lite med vår devsajt.
johaseoMedlem sedan maj 2009250 inlägg Hej Micke
Nu får du allt ta och byta ut din DIF-logga mot Barcelonas logga nu när Zlatan har flyttat dit .... det kan väl inte vara helt omöjligt att åka till San Siro ifrån där du bor? Hur lång tid tar det och hur mycket kostar det?
MickeA.com skrev:
Löste det med:
void Page_Load(System.Object sender, System.EventArgs e)
{
if(IsPostBack){
int tabid = DotNetNuke.Common.Globals.GetPortalSettings().ActiveTab.TabID;
string lang = ddlFeedLanguage.SelectedItem.Value;
Response.Redirect("/tabid/" + tabid + "/language/" + lang + "/Default.aspx");
}
ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales().AllKeys;
ddlFeedLanguage.DataBind();
}
Oskönt.. det verkar som om koden ovan "slår ut" _all_ ajax/telerik på hela sajten. Upptäckte att inloggningen inte funkade som den ska och tar jag bort filen som skriver ut språklistan fungerar det, har jag den där funkar det inte, då laddar hela sajten om istället för att köras via Ajax.
Vad kan vara fel? Något namespace/variabelnamn som krockar? Tur att jag testade på "dev" innan jag drog upp det live :)
johaseoMedlem sedan maj 2009250 inlägg Hej Micke
Ta och dubbelkolla url:en som produceras i koden:
Response.Redirect("/tabid/" + tabid + "/language/" + lang + "/Default.aspx");
Är den exakt likadan som den skulle blivigt och du gick till den sidan manuellt? dvs prova admin >> pages >> markera sidan och klicka på förstoringsglaset.... jämför de båda url:er
johaseo skrev:
Är den exakt likadan som den skulle blivigt och du gick till den sidan manuellt?
Nepp, när man går manuellt till en sida läggs ju alltid /parent_namn/sid_namn/ på url'en, så dom är inte likadana.
Hur spelar det in här?
johaseoMedlem sedan maj 2009250 inlägg försök och göra dem exakt likadana med hjälp utav NavigateURL metoden som finns inuti dotnetnuke biblioteket
Ska testa, tack! Hittade ju världens bästa referens för någon månad sen, förstår inte hur jag klarat mig i två år utan den här..: http://classbrowser.subzero-solutions.net/Default.aspx?tabid=130&tabindex=130&namespace=DotNetNuke
Hmm, så är har jag gjort:
void Page_Load(System.Object sender, System.EventArgs e)
{
if(IsPostBack){
string lang = ddlFeedLanguage.SelectedItem.Value;
[B]Response.Redirect(DotNetNuke.Common.Globals.NavigateURL(DotNetNuke.Common.Globals.GetPortalSettings().ActiveTab.TabID, "language", lang));[/B]
}
ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales().AllKeys;
ddlFeedLanguage.DataBind();
}
Om jag står på den svenska sidan (sv-SE) och väljer Engelska, blir jag omdirigerad till:
/Home/tabid/61/ctl/language/en-US/language/sv-SE/Default.aspx
johaseoMedlem sedan maj 2009250 inlägg Det borde fungera nu mao ?
johaseo skrev:
Det borde fungera nu mao ?
Sorry om jag var lite otydlig, men nej, det gör det inte. Som du ser i url'en ovan så skrivs /language/ ut två gånger.
Har googlat lite på NavigateUrl och det verkar som att dom flesta använder det när man ska växla mellan t.ex. view -och edit mode.