webForumDet fria alternativet

datalist med länk

.NETur .NET

16 svar · 419 visningar · startad av Mc Fetto

Medlem sedan nov. 20022 355 inlägg
Frågan#1

Jag har en DataList som jag binder med ett DataSet, DataSet:et får data ifrån min databas med kolumnerna Name, Url och Hits.

Det jag vill göra nu är att i min DataList visa endast Name och Hits. Här ska Name vara än hyperlänk med url:en från Url i DataSet:et. Jag har letat en del men inte hittat ngt bra, så om någon har en bra tutorial på problemet, posta det. Alternativt om ni har tips på hur jag ska gå till väga! Tack :bire

Medlem sedan nov. 20022 355 inlägg
#2
				<ItemTemplate>
					<asp:HyperLink NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "Url") %>' runat="server" ID="hrfLinks"><%# DataBinder.Eval(Container.DataItem, "Name") %></asp:HyperLink>
					<%# DataBinder.Eval(Container.DataItem, "Hits") %>
				</ItemTemplate>

Smart :) sen är det väl bara till att trycka in lite MS-taggar också ;)

Medlem sedan nov. 20022 355 inlägg
#3

Jag har lagt in lite tagar och så innanför <ItemTemplate>, men om man nu skulle vilja utföra lite code-behind innan man skickas iväg till url:en på de olika länkarna. Hur gjör man detta? skulle behöva kalla på en metod som tar som inparametrar de olika kolumnvärdena!

Medlem sedan nov. 2003569 inlägg
#4

du skapar en delegat , en händelsehanterare på datalist:en. Och den händelsen är "ItemCommand"

Medlem sedan nov. 20022 355 inlägg
#5

nope, fungerar inte! :(

Medlem sedan dec. 19996 522 inlägg
#6

Hur lägger du till dem?

Medlem sedan nov. 20022 355 inlägg
#7

erka skrev:

Hur lägger du till dem?

ItemCommand?
Nu när du frågar så kollade jag, jag lade till i event på datalisten, en metod för ItemCommand. Men jag ser nu att ingen kod skapades på html-sidan. Kan du hilfa till lite på vägen?! :)

Medlem sedan dec. 19996 522 inlägg
#8

Hur lägger du till det i InitializeComponent? Antar att du ska använda samma command till alla olika items i din datalist

Medlem sedan maj 20012 812 inlägg
#9

Som jag förstår dig så vill du när man trycker på en länk, gå till din code-behindsida och utföra lite fuffens och sedan skickas vidare?

Om det är så du menar så skall du inte använda HyperLink, utan en linkButton och i denna finns ett OnClick event, då kommer du gå till din code-behind sida när du trycker på linkbuttonen och i det event får du sedan göra en Response.Redirect() för att komma till rätt sida.

- M

Medlem sedan nov. 20022 355 inlägg
#10

Låter ju vettigt, men länken ska skapas i nytt fönster.. antar att det inte är några problem!

Medlem sedan nov. 20022 355 inlägg
#11

Som riktig rookie på asp.net så är detta säkert en knäpp fråga..
Men jag har nu lagt in en linkButton i min DataList och använder mig utav CommandName och CommandArgument för att skicka med ett par argument till en metod som sedan uppdaterar i databasen. Men när man klickar på linkButton så uppdateras allt i databsen korrekt fast på sidan ligger allt ett "steg" efter. Hur löser man detta? Vill att det ska uppdateras samtidigt...

Sedan vill jag kunna skapa ett nytt fönster som skickar en till den länk man klickat på "eller url-värdet ivf) :) Tacksam för hjälp!

Medlem sedan maj 20012 812 inlägg
#12

Du kan inte från din codebehind nå ett annat fönster. om du vill det så måste du istället för en redirect skriva ut en liten javascript funktion som öppnar ett nytt fönster och laddar rätt sida.

Detta kan du lösa med Page.RegisterClientScript() eller vad funktionen nu heter.

Hur menar du med att sidan ligger ett steg efter? Är det så att du uppdaterar namnet på en person och efter din postback så är namnet inte ändrat, men efter ytterligare en postback så är namnet ändrat?

om det är så så brukar felet vara att man inte binder om sina controller i event methoden, alltså i din onClick metod så måste du fylla dina kontroller med data från databasen, eftersom det är först nu som datan i databasen har blivit ändrad.

- M

Medlem sedan nov. 20022 355 inlägg
#13

Ska kolla på script-metoden..
Jag har en databindning både i Page_Load och efter uppdateringen i databasen (i onClick-metoden).

Medlem sedan nov. 20022 355 inlägg
#14

kollar lite på det dära "script-registreringen" nu och har ett exempel som jag har i Page_Load:

// Form the script that is to be registered at client side.
			String scriptString = "<script language=JavaScript> function DoClick() {";
			scriptString += "myForm.show.value='Welcome to Microsoft .NET'}<";
			scriptString += "/";
			scriptString += "script>";

			if(!this.IsClientScriptBlockRegistered("clientScript"))
				this.RegisterClientScriptBlock("clientScript", scriptString);[/

När jag sedan kollar på källan så är javascriptet där :)
Problemet är att jag hittar inte någonstans hur jag kan anropa detta från code-behind!

Medlem sedan apr. 2004778 inlägg
#15

Du kan inte anropa ett clientside-script från code-behind. Du måste lägga javascript anropet på den länk eller knapp som skall använda scriptet.

Medlem sedan nov. 20022 355 inlägg
#16

Var lägger jag den här då:

<asp:LinkButton ID="link" OnCommand="incrementLink" CommandName="name" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "URL") + "#" + DataBinder.Eval(Container.DataItem, "Hits") %>' Runat="server">
	<%# DataBinder.Eval(Container.DataItem, "Name") %>
</asp:LinkButton>
Medlem sedan nov. 20022 355 inlägg
#17

Löste det med en vanlig hyperlink som jag skickar med värdena som öppnar ett nytt fönster. Där kör jag en response.redirect()

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