Hej.
Jag vill kunna fånga upp den raden i en datagrid som är blåmarkerad...
*datagriden heter dgFlights
*kolumnerna heter dataGridTextBoxColumn1 t.o.m 9...
Hur gör man detta?
8 svar · 211 visningar · startad av skyman
Hej.
Jag vill kunna fånga upp den raden i en datagrid som är blåmarkerad...
*datagriden heter dgFlights
*kolumnerna heter dataGridTextBoxColumn1 t.o.m 9...
Hur gör man detta?
dgFlights.SelectedIndex
SelectedIndex, som borde vara det självklara valet finns inte med när man "punktar" efter dgFlights...
Select finns färemot :l
Kan man på något sätt få med den raden man valt, och i skicka den till en annan flik på min windowsapplikation i form av xml?
Ett alternativ är att fånga upp ditt event när du klickar på en rad så här:
e.Item.ItemIndex
...och om du exempelvis har en datagrid så kan du sätta DataKeyField (ett fält i din databas) till exempelvis ditt ID och sedan plocka ut dess ID för den raden du klickade på:
DataGrid.DataKeys[e.Item.ItemIndex]
Men det är konstigt att du inte får upp selectedindex, det SKA finnas... det är ju det index som du har valt och som du alltid kan plocka ut. Kanske har det blivit något fel när du instansierat din kontroll så den inte fattar att det är en datagrid?
Ja jag tycker också att det är märkligt.
Instansen är det nog inget fel på, den fungerar annars.
Ska man arbeta på DatGrid-nivå, inte DatGridTextBoxColumn...?
Jag förstod inte riktigt med att sätta DataKeyField i databasen...
Jag var lite otydlig där, du ska inte sätta DataKeyField i din databas utan på din datagrid... men du VÄLJER i din datagrid att använda exempelvis ditt ID i databasen (alla fält kan användas som DataKeyField). Du kan i din datagrid exempelvis skriva DataKeyField="ID". Detta använder du för att plocka ut exempelvis ett ID för den rad du har valt... id behöver ju inte nödvändigtvis vara samma som ditt index. Genom att då plocka ut det ID som den kolumnen har för ditt ItemIndex i datagriden (den markerade raden) så är det en enkel match att exempelvis öppna data tillhörande det ID för den kolumnen!
Men detta kommer inte att fungera om du inte kan plocka ut den händelse (event) som inträffar när du klickar på en rad. I din datagrid så finns ett par inbyggda händelsehanterare som du kanske vet (kan enkelt väljas i properties/Action om du använder vs.net). Om du klickar på en rad i din datagrid så fångar du upp händelsen och lägger den i en variabel (exempelvis e som i event).
private void thisEvent(object source, [b]System.Web.UI.WebControls.DataGridCommandEventArgs e[/b]) {}
Denna händelse lagrar sedan information, exempelvis innehåller den det index du fått när du tryckte på en rad i din datagrid och startade ditt event. Denna kan du naturligtvis plocka upp:
e.Item.ItemIndex
Ovanstående kod ska alltså innehålla den rad (det index) som du tryckte på i din datagrid... 0 för första rade, 1 för andra, 2 för tredje osv. På denna kan du sen applicera en datakey för att hämta exempelvis ett ID från din databas för just den raden!
Visst kan du gräva i din datagrid i dess kolumner och celler, men det behöver du inte göra om du bara ska fånga upp vilken rad som är vald.
Ok. Nu förstod jag lite mer.
Jag vet inte om det strular till det men mina poster i databasen har inte unika nummer, eller rättare sagt min SELECT-sats som innehåller ett gänger inner joins.
Var det detta ID som du sa att man kan lägga in i DataKeyField, vilket jag inte har...? ;)
Jag ska kolla upp detta i prop. för datagriden.
Tack för att du tar tid :)
Well, du behöver ju som sagt inte ha just ett ID som DataKeyField och det är på din datatabke/dataset som den letar efter ditt datakeyfield så om att du joinar en massa tabeller ska inte spela någon roll.
Nu är det väl inte det som var svaret på din fråga utan vilket index den markerade raden har... och då är det e.Item.ItemIndex du använder i samband med att du kör själva eventet.... alternativt SelectedIndex när du vill plocka ditt index som är valt sedan tidigare. Mysko att det inte funkar.
Ja det är det.
Det som visas i datagriden är ju xml som skickats. Om man gör som du sa med DatKetField osv, får man hela den xml-biten för den raden, eller hur fungerar det om man vill hämta allt på hela raden?