06. marts 2007 - 12:15Der er
15 kommentarer og 1 løsning
Datagrid og editerbar checkbox
Hej,
Jeg har et DatagridView, hvor jeg har to checkboxe for hver række (Betalt og RykkerSendt). De fungerer fint nok, når jeg kører koden (viser de korrekte afkrydsninger, hentet fra databasen) MEN - jeg har ikke mulighed for at fjerne/sætte en afkrydsning (felterne er "grået ud").....hvordan får jeg dem hvide, så jeg har mulighed for at ændre status på afkrydsningerne og så efterfølgende gemme ved at klikke på en Gem knap?
Mht. fejlen - så er der mere end én vej frem. Du kan lave "det hele manuelt" - der findes masser af eksempler på nettet, og jeg kan godt finde nogle til dig. Det er dog blot et spørgsmål om at abbonnere på de respektive events - og skrive lidt småkode histen og pisten... ikke det vilde.
Du kan også benytte en object datasource som arbejder op imod dine egne klasser/api'er. De stiller så til gengæld nogle krav til dine klasser - men din code-behind vil så ikke være syltet ind i den slags kode... Det vil være pakket nogenlunde pænt ind.
De medfølgende muligheder du har omkring opdatering i et gridview er rækkebaseret, men du kan godt få editérbare kontroller ind i rækkerne istedet, hvis du laver templates... Det er ikke noget problem.
Her er et gridview der viser en editérbar tekstboks i alle rækker:
Altså der er to muligheder: - manuelt - object datasource
Kan du linke mig til en "How to tutorial for dummies" på den der lettest at forstå?
Jeg forsøgte mig med TemplateField og så en checkbox (for det eneste der skal kunne ændres er kun de to checkboxe) - men kunne så ikke hitte ud af at få min true/false felt til at blive vist (med afkrydsning), når feltet for den pågældende række i databasen var true.
Den kom frem med en fejl når jeg forsøgte med Selected='<%#osv - at jeg ikke kunne lave en bind på den pågældende kontrol....
Well ... Svært at sige hvad der er lettest at forstå - jeg synes du skal prøve at arbejde med begge dele. Du kan se en video hvor der arbejdes med en sql server her: http://www.asp.net/learn/videos/view.aspx?tabid=63&id=49 Du kan lave de samme numre op imod din egen objektmodel med en object datasource.
Selected='<%# Eval("Betalt") >' burde virke fint, og Selected='<%# Bind("Betalt") >' skulle også være fin.
System.InvalidCastException was unhandled by user code Message="Specified cast is not valid." Source="App_Web_jh9i2vsb" StackTrace: at ASP.kunder_aspx.__DataBinding__control40(Object sender, EventArgs e) in c:\Inetpub\wwwroot\Faktureringssystem\Kunder.aspx:line 473 at System.Web.UI.Control.OnDataBinding(EventArgs e) at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at System.Web.UI.Control.DataBind() at System.Web.UI.Control.DataBindChildren()
Nu har jeg så fundet ud af, hvad du mener med object datasource, og denne måde kan(vil) jeg ikke bruge, da jeg så, hvis jeg ændrer i connectionsstring, skal ind og rette på alle sider.
Jeg har gjort det manuelt fra start i en seperat fil, jeg kalder, når jeg har brug for den. De to links jeg har fået af dig, bygger på object datasource metoden, og jeg kan ikke bruge dem desværre
Æhh... er ikke helt med på hvad du mener? Der er hverken med object datasource eller sql data source noget behov for at skrive connectionsstring på dine sider. Med en objectdatasource tilgår du dine egne klasser, og der angiver du jo selv hvordan din connectionstring skal findes frem. Lader du VS lave dig en sql datasource - lægger miljøet din connectionstring i web.config.
Her et ultrahurtigt og principielt eksempel på brug af en object data source:
Nu henter jeg så ikke noget fra en database - men det skulle gerne illustrere at du er væk fra din for med den klasse, og at du kan lave den som du har lyst til... Du kan naturligvis også returnere lister af egne typer ell.
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.