webForumDet fria alternativet

CheckBox i en datagrid?

.NET

3 svar · 213 visningar · startad av NETwork

Medlem sedan juni 20011 732 inlägg
Frågan#1

Tjoho! Jag har en datagrid och i denna en templatecolumn med en <asp:checkbox>. I denna hämtar jag en bool från min databas så jag kan sätta checkboxen checked="true/false" för varje rad, så här:

                  <ItemTemplate>
                    <asp:CheckBox id="CheckBox1" Enabled="false" Checked='<%# DataBinder.Eval(Container.DataItem, "ok") %>' Runat="server"></asp:CheckBox>
                  </ItemTemplate>

Nu försöker jag sätta en autopostback på checkboxen och direkt uppdatera databasen för aktuell rad med true/false direkt när jag trycker på checkboxen. Men jag lyckas inte skicka in den i en funktion, antar att man ska använda OnCheckedChanged="minFunktion" men jag lyckas inte komma in i min funktion överhuvudtaget. Någon som vet hur den ska se ut?

------------------
Jag kan inte komma på någon signatur.

Medlem sedan dec. 2000399 inlägg
#2

Hej!

Lite snabbt från manualen:

Public Instance Events
----------------------
Event: CheckedChanged
Description: Occurs when the Checked property is changed.

Lite kod:

<asp:Checkbox id="tjoho" CheckedChanged="minFunktion" Checked='<%# DataBinder.Eval(Container.DataItem, "ok") %>' runat="server/>

------------------
mvh André

[Redigerat av juventus1 den 31 jan 2002]

Medlem sedan juni 20011 732 inlägg
#3

Tack! Men lite mer problem. Jag har en checkbox som finns på varje rad i min datagrid. När jag trycker på checkboxen (som har autopostback="true") så måste jag på nåt sätt komma åt vilken rad i datagriden just den checkboxen jag tryckte på ligger i... så jag därifrån kan hämta min datagrids DataKeyField (som är mitt ID i databasen) för den raden. Någon som kan?

------------------
Jag kan inte komma på någon signatur.

Medlem sedan juni 20011 732 inlägg
#4

Ah, jag fixade det. :)

Först hämtade jag min sender och två "parents" upp från den så hittade jag min DataGridItem där jag har ett ItemIndex (ItemIndex är helt enkelt ett index med början på 0 för varje rad i min datagrid). Värdet lägger jag sedan i min variabel "rowNum":

int rowNum = ((DataGridItem)((CheckBox)sender).Parent.Parent).ItemIndex;

När jag nu vet vilken rad checkboxen befinner sig på kunde jag hämta min datakey för den raden i datagriden. En datakey är alltså en "nyckel" som jag kan sätta för varje rad (nyckeln sätter man i datagriden), i mitt fall använde jag ett id från databasen. Mitt id i databasen behöver ju inte nödvändigtvis vara samma som det index jag får fram med ItemIndex, därför behöver jag göra detta.

Så jag hämtar min datakey för den raden där checkboxen jag klickade på befinner sig och lägger mitt id i variabeln thisId - som jag sedan kan använda i min sql-sats där jag uppdaterar tabellen med det nya värdet!

int thisId = MyDataGrid.DataKeys[rowNum];

Voila! :)

------------------
Jag kan inte komma på någon signatur.

[Redigerat av NETwork den 01 feb 2002]

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)