10. november 2005 - 16:32Der er
28 kommentarer og 1 løsning
checkbox i dataset, edit
Jeg har et dataset hvori der er et felt med en checkbox i, denne checkbox skal repræsentere et 0 eller 1 i en sql database. jeg kan fint tilskrive den værdien, ved at tjekke på datarow værdien i min itembound event. men hvordan får jeg sat værdien i checkboxen i det øjeblik hvor brugeren trykker på edit? jeg kan jo ikke teste på den i itembound, for da eksisterer den control ikke, og det gør den heller ikke i editcommand eventen.
men itembound burde også blive kørt når den bygger datagriddet i edit mode, men hvordan kan jeg skilne mellem de 2 tilstande?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
if (e.Item.ItemIndex != -1 && e.Item.ItemIndex == grid.EditItemIndex) uhm, jeg kan ikke få den til at hoppe ind id en if, e.Item.ItemIndex bliver aldrig lig grid.EditItemIndex.
det er meget underligt må jeg indrømme... e.Item.ItemIndex er altid lige med antal elementer i mit grid, også når jeg trykker på edit(og felterne kommer fint frem)
serveren har ikke debug enabled, desværre. men hvis jeg smider dataen ud i textboxe kan jeg se at e.item.itemindex altid er antal elementer i mit datagrid, undtagen hvis jeg vælger det sidste element, så er det antal-1, det er meget underligt
ja det lyder lidt besynderligt .... hvorfor udvikler du ikke lokalt - og lægger tingene op når du er færdig? (så slipper du jo for alt muligt bøvl omkring serverrestriktioner etc). mvh
hm.. det er meget besynderligt, e.item.itemindex beholder den værdi den har fået på et tidspunkt, dvs den skifter lidt imellem at være -1 eller 28. jeg forstår det ikke
du må skrive den ud her: private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { DataGrid1.EditItemIndex = e.Item.ItemIndex; Adapter.Fill(set2); DataGrid1.DataBind(); } og se hva du får, og hvad der sker. mvh
jeg skal ikke kunne sige hvorfor det driller.... hvis din variabel har den værdi den skal have i din editcommand, må du bare gemme værdien i en anden variabel som du så kan bruge i databindingrutinen.
men ellers prøv lige det eksempel jeg sendte dig - og se om det virker hos dig.
hm.. nu har jeg fået overført værdien vha. en anden variable, men jeg kan ikke helt finde ud af hvordan man finder det rigtige element.
du har skrevet: TextBox tb = e.item.Cells[1].Controls[0] as TextBox; så burde jeg jo også kunne skrive: CheckBox Cb = e.item.Cells[3].Controls[0] as CheckBox; der er 2 read only textfelter og et alm textfelt foran.
men jeg kan ikke få fat i mit objekt ligemeget hvad jeg skriver, får at vide at index er out of bounds.
det er 0-indekseret, så du skal skrive CheckBox Cb = e.item.Cells[2].Controls[0] as CheckBox; hvis du vil have fat i celle nummer 3. hvis du har andre kontroller i feltet kan det så være nødvendigt at justere på Controls[X] også. men ... hvis du laver det til en templatekolonne kan du give checkboksen et id, of få fat i den med :
CheckBox cb = e.Item.FindControls("checkBoxId") as CheckBox;
hm.. ja, jeg får sådan set bare en fin fejl som siger: Object reference not set to an instance of an object på linjen hvor jeg piller med det objekts proberties, det vil jeg mene betyder at jeg ikke har fat i checkboxen. jeg har dobbelttjekket hvad den checkbox hedder, hvor kan man ellers gå fejl her?
svaret kom til mig da jeg stod og gloede på kaffemaskinen her til morgen, itemtype hedder jo edititem når man trykker på editknappen. du har ikke det tjek i din kode, og derfor virker den som det skal.... har tilføjet edititem til listen over ting den skal tjekke for, og nu kører det.
dum fejl fra min side, men det er en af de ting man altid glemmer at tjekke for :-)
HAHA - ja jeg kunne unægteligt også godt have været lidt mere vågen der :oD .... tilsyneladende et bevis for at 4 øjne ikke altid ser bedre end 2 :o) mvh
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.