webForumDet fria alternativet

Lägga in Container.DataItem i LinkButton

18 svar · 360 visningar · startad av Marckus

MarckusMedlem sedan dec. 2001144 inlägg
#1

Hejsan!

Jag försöker stoppa in <%# DataBinder.Eval(Container.DataItem, "id") %>

i en <asp:LinkButton id="<%# DataBinder.Eval(Container.DataItem, "id") %>">

men får "The server tag is not well formed."
Har ingen aning om vad som spökar.

Och ja, Jag är newbie på ASP.net (C# codebehind)

Mvh
Marcus

fredrikMedlem sedan dec. 19991 072 inlägg
#2

Prova att byta " mot '. Alltå:
<asp:LinkButton id='<%# DataBinder.Eval(Container.DataItem, "id") %>'>

Den klagade iaf på det för mig när jag försökte skriva ut en <%=%> i ett attribut i html-läget.

MarckusMedlem sedan dec. 2001144 inlägg
#3

Då får jag ett annat error message!

'<%# DataBinder.Eval(Container.DataItem, "id") %>' is not a valid identifier

Mvh
Marcus

icaaqMedlem sedan okt. 20005 273 inlägg
#4
[red]
<asp:LinkButton id='<%#Container.DataItem("id") %>'> 
[/red]

Kanske :OO

icaaqMedlem sedan okt. 20005 273 inlägg
#5

Eller om måste ha DataBinder.Eval så

[red]
DataBinder.Eval(Container.DataItem, "id", "{0:G}")
[/red]
NETworkMedlem sedan juni 20011 732 inlägg
#6

Du måste ha runat="server" i din linkbutton.

MarckusMedlem sedan dec. 2001144 inlägg
#7

Samma error ändå :/..
Det funkar fint att hämta värdet och placera det utanför LinkButtonen men inte i :/

Mvh
Marcus

NETworkMedlem sedan juni 20011 732 inlägg
#8

Visa hela koden!

NETworkMedlem sedan juni 20011 732 inlägg
#9

Ah, men vänta nu här, nu ser jag vad du gör... du kan inte sätta ett dynamiskt ID på det där sättet. Du behöver inte ha det heller! Vad är det du försöker göra?

MarckusMedlem sedan dec. 2001144 inlägg
#10

Jag försöker bygga en knapp som kan ta bort inlägg ifrån databasen.. Brevid varje inlägg så har jag ett X för delete..

Tyvärr vet jag inget annat sätt ännu för att ta bort inlägg i databasen än typ delete from tabellen where id = 'id';

Vill helst också utnyttja att allt ligger på en sida och inte behöver gå till olika sidor för olika saker..

Mvh
Marcus

NETworkMedlem sedan juni 20011 732 inlägg
#11

Det är inga problem. Glöm bort ditt id på din linkbutton överhuvudtaget, det behövs inte. :) Använder du en datagrid?

MarckusMedlem sedan dec. 2001144 inlägg
#12

Använder Repeater på ASPX sidan och

SqlConnection myConnection = new SqlConnection("server=NETDOT;database=Development;User ID=marckus;password=ettlösenordsomniinteser");
string myQuery = "select * from inkopes";
SqlDataAdapter myCommand = new SqlDataAdapter(myQuery,myConnection);

		myConnection.Open();

		DataSet ds = new DataSet();
		myCommand.Fill(ds);

		varuShow.DataSource = ds;
		varuShow.DataBind();

		myConnection.Close();
		myConnection.Dispose();

Så ser koden ut i codebehindfilen för att hämta värdena och spotta ut dom!

icaaqMedlem sedan okt. 20005 273 inlägg
#13

Kolla in CommandName och CommandArgument. Jag tror det är det man ska använda....(rätta mig om jag har fel)

mvh icaaq

renholmMedlem sedan apr. 20012 266 inlägg
#14

Här finns ett exempel för att använda en DataGrid: http://docs.aspng.com/quickstart/aspplus/doc/webdataaccess.aspx#delete

MarckusMedlem sedan dec. 2001144 inlägg
#15

Renholm : Jag kör inte datagrid.. för jag gillar inte att lista data i den formen utan jag vill kunna själv bestämma layouten ..

Icaaq : tror jag provat med CommandArgument .. alltså att lägga värdet där men fick error då med..

Mvh
Marcus

NETworkMedlem sedan juni 20011 732 inlägg
#16

Ok, ett sätt att lösa det på är att du sätter ett...

CommandArgument='<%# DataBinder.Eval(Container.DataItem, "id") %>'

... på din linkbutton. När du sedan klickar på din linkbutton och så hämtar du sedan ditt id genom att läsa det commandargument (som ju innehåller ditt id) från den linkbutton som kastade eventet. Så här gör du steg för steg:

I din linkbutton sätter du en onclick="dinfunktion". Funktionen får inte vara private. En vanlig standardfunktion, inga konstigheter:

public void dinfunktion(object sender, System.EventArgs e) {
}

Här fångar vi upp din linkbutton (sender), vi behöver alltså inte något id på din kontroll alls. På denna kan du sedan enkelt hämta ditt id. Du vet att sender är en LinkButton, alltså typkonverterar du sender till en sådan och hämtar sedan dess commandargument.

string mittidvarsdatajagskauppdatera = ((LinkButton)sender).CommandArgument;

Där har du ditt id som du sedan kan använda för att uppdatera din databas. Voila! :)

MarckusMedlem sedan dec. 2001144 inlägg
#17

Ohhh.. Tackar för alla hjälp!
Springer och testar genast! (rullar stolen till burken)

:)

Mvh
Marcus

NETworkMedlem sedan juni 20011 732 inlägg
#18

Marckus skrev:

Renholm : Jag kör inte datagrid.. för jag gillar inte att lista data i den formen utan jag vill kunna själv bestämma layouten ..

Mvh
Marcus

Du kan bestämma layouten till väldigt stor del även i en datagrid genom att använda templates. Och i en datalist har du i princip samma möjligheter att kontrollera layouten som i en repeater. Det är inte något fel i att använda en repeater, absolut inte, men du missar en hel del smarta funktioner... och så är det lite lättare att göra en smidig och enkel uppdatering i en datagrid. Men det är ju inte speciellt svårt att göra det i en repeater heller så... ja, det var bara en parentes. :)

MarckusMedlem sedan dec. 2001144 inlägg
#19

Tackar så mycket igen! Funkade galant!
Lärde man sig ännu mer idag!! Tack tack!

Mvh
Marcus

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