webForumDet fria alternativet

DotNetNuke DroDown.Bind()

32 svar · 1 828 visningar · startad av MickeA.com · sida 2 av 2

MickeA.comMedlem sedan feb. 20034 441 inlägg
#21

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?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#22

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
#23

Hej Micke

Det där löste du ju snabbt själv .... hur många dotnetnuke siter är det ni skall modifiera?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#24

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
#25

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.comMedlem sedan feb. 20034 441 inlägg
#26

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
#27

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

MickeA.comMedlem sedan feb. 20034 441 inlägg
#28

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
#29

försök och göra dem exakt likadana med hjälp utav NavigateURL metoden som finns inuti dotnetnuke biblioteket

MickeA.comMedlem sedan feb. 20034 441 inlägg
#30

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

MickeA.comMedlem sedan feb. 20034 441 inlägg
#31

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
#32

Det borde fungera nu mao ?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#33

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.

135 ms totalt · 3 externa anrop · v20260731065814-full.102f7fcd
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)