webForumDet fria alternativet
Logga in / Bli medlem

vad saknar mitt itemcommand?

.NET

5 svar · 412 visningar · startad av stolpskottet

Medlem sedan mars 200527 inlägg
Trådstart#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

Medlem 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

Medlem 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!

Medlem 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

Medlem sedan mars 200527 inlägg
#5

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

Medlem 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

263 ms totalt · 4 externa anrop · v20260731065814-full.81e7e81c
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)