webForumDet fria alternativet

vad saknar mitt itemcommand?

5 svar · 410 visningar · startad av stolpskottet

stolpskottetMedlem sedan mars 200527 inlägg
#1

Jag har ett datagrid med två ButtonColumn. När jag klickar på någon av dessa vill jag ha tillgång till den aktuella raden i min datakälla.

nåt i den här stilen:

sub ic(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
 Dim id As Integer = e.Item.DataItem(0)
end sub
<asp:DataGrid OnItemCommand="ic" ...

vad saknar min kod?

hade en lösning som såg ut såhär:

  
Dim id As Integer = CType(dg.DataSource, DataTable).Rows(e.Item.DataSetIndex)(0)

men det fungerar inte nåt vidare när jag sorterar min datagrid

Andy_KMedlem sedan juli 200330 inlägg
#2

För att komma åt den första kolumnen

Dim Id As Integer = e.Item.Cells(0).Text

Om du har en textbox

CType(e.Item.Cells(0).Controls(0), TextBox).Text

Men om du har fler kolumner som du vill ha ut är de väl bara at fortsätta plocka dom?

Dim Id As Integer = e.Item.Cells(0).Text
Dim text1 As string = e.Item.Cells(1).Text
Dim text2 As string = e.Item.Cells(2).Text
...

Edit: Vet inte om det var svaret på din fråga dock :r

stolpskottetMedlem sedan mars 200527 inlägg
#3

var inte riktigt svaret. i och med att jag ej har värdet i en kolumn i datagriden.

kan förklara lite utförligare:

jag har en tabell med lite olika kolumner bla. ett id för raden samt 2 värden som jag använder mig av när jag presenterar datagriden. när jag klickar på någon av dessa 2 vill jag ha ut kolumnen id från datakällan så att jag kan visa övrig information för den raden!

när jag har jobbat med repeaters har det varit väldigt enkelt att få ut data från datakällan för den aktuella raden tex.

e.Item.DataItem("id")

men hur gör jag med ett datagrid om jag vill åstakomma samma sak?
måste jag ha någon typ av dålt fält som innehåller id som jag kan använda Item.Cells för att hämta?
eller kan kan jag binda id-värdet till ButtonColumn:ens CommandName?
naturligare hade väl varit att använda CommandArgument men den verkar inte finnas med för ButtonColumn?

jättetacksam för svar!

Andy_KMedlem sedan juli 200330 inlägg
#4

Enklast är väl att du gör som du säger. Du skapar en dold kolumn som innehåller id och som du sen hämtar med Item.Cells

stolpskottetMedlem sedan mars 200527 inlägg
#5

jo, gjorde så, men det kändes inte som den bästa lösningen?

Andy_KMedlem sedan juli 200330 inlägg
#6

Nu tvingade du mig o läsa lite mer om datagriden :e
Och de var bra att du gjorde det! Hittade en grej som jag missat förut :r som du helt klart ska använda dig av.

DataKeyField="id"

Det är ett attribut som datagriden har. Och du kommer åt detta värde genom

datagriden.DataKeys(e.Item.ItemIndex)

Edit: mer info se http://aspnet.4guysfromrolla.com/articles/090402-1.aspx

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