Jag har en asp:datalist kallad Started som jag genererar från en databas: Tyvärr har inte en repeater tillgång till propertyn DataKeyField. Med den kan man bara anropa: Tackar det löste mitt problem. Du kan spara ner data i hidden-fält i varje repeateritem, och sen hämta innehållet via Repeater.Item(x).FindControl.Hämta specifika data från en asp:datalist till code-behind.
<code>
<asp:DataList
ID="Started"
OnItemCommand="MoveTask"
runat="Server"
>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Title") %>
<asp:Button
ID="Command"
Text="Test"
CommandName="Hello"
runat="server"
/>
</ItemTemplate>
</asp:DataList>
</code>
<code>
void Page_Load(Object sender, EventArgs e) {
if (!Page.IsPostBack)
{
Started.DataSource = SQLSelect("SELECT ID, Title FROM Tasklist");
Started.DataBind();
}
}
protected void MoveTask(object Source, DataListCommandEventArgs e)
{
//För debugging
Response.Write(e.Item.ItemIndex); // Returnerar raden som knappen man tryckt på ligger.
}
</code>
Det fungerar fint att hämta datat från databasen och lista det på sidan. Vad jag nu vill göra är att varje post ska ha en knapp och när man trycker på den knappen vill jag på något sätt få tag på databasens ID för den posten.Sv: Hämta specifika data från en asp:datalist till code-behind.
DataList.DataKeys[e.Item.ItemIndex]
I en repeater är det lättaste sättet antingen att sätta typ ett hiddenfält eller liknande eller så får du hämta upp datat igen och hämta ut ID't baserat på indexet.
Kanske kan byta till en DataList istället. Sätt bara RepeatLayout till flow så har du i princip samma rendering...
[EDIT]
Om man läser inlägget helt och inte snöar in på att man jobbar med en repeater precis samtidigt så hade svaret varit bättre... Ber om ursäkt för det.
Sätt DataKeyField till namnet på den kolumn du har id't i.
I handlern är det sen bara att anropa: DataList.DataKeys[e.Item.ItemIndex]Sv:Hämta specifika data från en asp:datalist till code-behind.
Men om jag i framtiden även vill få tag på till exempel Titel kolumnen hur gör jag i så fall? (Utan att hämta det från databasen igen.) Går det att hämta data direkt från datalisten?Sv: Hämta specifika data från en asp:datalist till code-behind.