Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Jeg tror det er det jeg mener.....Jeg har indtil nu lavet én servercontrol, der bandt data(sqldatabase) til en dropdown. Det jeg mangler er en tutorial, der viser, hvordan jeg binder data til et gridview istedet - så jeg stadig har et gridviews funktionalitet - såsom at slette en række - editere og tilføje en række.
Desværre ikke nej, artiklen fortæller jo bare, hvordan jeg får et gridview til at arbejde sammen med en tabel/forespørgsel i en database....... Og det er jo ikke deri mit problem på nogen måder ligger......Det har jeg gjort i 2 år nu.
Mit problem ligger i, som skrevet, at jeg vil lave en web server control, hvor jeg så har et gridview i denne (det du skriver som "selv" skal tegne) og det er det, jeg mangler en tutorial i......Jeg kan finde en, hvor den gør det til en dropdown control og det fungerer ganske glimrende.....men forsøger jeg at oversætte dette til en gridview får jeg fejl, så derfor har jeg brug for en howto/tutorial
using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient;
try { ds = new DataSet(); da = new SqlDataAdapter(SQL, ConnectString);
da.Fill(ds);
return ds; } catch (Exception ex) { throw ex;
} } } }
Min fejl siger:
Error 1 'DataDropDown.DataGridView.DataBind()': cannot override inherited member 'System.Web.UI.WebControls.GridView.DataBind()' because it is sealed C:\Projekter\Test\DataDropDown\DataDropDown\DataDropDown\DataGridView.cs 48 30 DataDropDown
Altså den fejler ved følgende linie(metode): public override void DataBind()
En anden ting, jeg ikke helt forstår (men ved da det virker ved dropdown'en) er følgende linie: "SELECT {0}, {1} FROM {2}"
Normalt når jeg laver en select, gør jeg det på følgende måde SELECT tabelID, navn FROM tabelnavn
Jeg kan gætte mig til at {2} betyder at den henter den property jeg sætter på som er tabelnavn - men hvor får den to-tallet fra? og igen - hvor får den de andre to tal fra?
String.Format("SELECT {0}, {1} FROM {2}", base.DataTextField, base.DataValueField, mstrDataTable); Det er en formatteret streng med parametre, så {0} erstattes med base.DataTextField {1} erstattes med base.DataValueField {2} erstattes med mstrDataTable
Det er en helt normal konstruktion, der intet har med datagrids eller lign. at gøre
din fejl består (jf beskrivelsen) i at du forsøger at ændre/overskrive en indbygget funktion (i System.Web.UI.WebControls.GridView.DataBind()) med din egen udgave og da denne metode er sealed, så kan det ikke lade sig gøre...
protected override void Render(HtmlTextWriter output) { base.Render(output); } Det er denne metode du skal bruge til at "tegne" din custom control, altså alt hvad der skal vises i brugergrænsefladen skal "render's" her
Du behøver ikke nedarve fra gridview, du kan tegne det i stedet (altså tilføje en variabel af typen gridview og i render funktionen noget i retning af GridViewVariabel.Render().)
Hvor får den base.DataTextField og base.DataValueField fra?....for jeg kan ikke se, det er noget, jeg har skrevet ind i koden og normalt når jeg laver en select kommando - så er det jo værdi feltet jeg skriver ind - altså eksempelvis byID feltet fra databasen det er jo ikke en insert statement?
Jeg kan godt se den er selead, altså at de har lavet det sådan, at man ikke kan tilgå den, men forstår slet og ret ikke hvorfor jeg ikke kan fylde et datagrid op fra start af i en custom control? Så synes jeg jo sådan set at custom controls mister sin værdi, hvis man ikke kan den slags...... og hvorfor kan det så lade sig gøre i en dropdown boks?
Forstår jeg dig korrekt mht. protected override void Render....at ville jeg f.eks. putte gridviewet ind i en datatable og vise den på en bestemt måde, er det her, jeg skal gøre dette? Eller er det selve gridview'ens udseende jeg skal render her?
Jeg har nedarvet, fordi jeg mener, at have læst mig frem til, at jeg så er fri for at lave de forskellige funtioner, som gridviewet er i stand til. F.eks. har jeg ikke planer om, at gøre noget ved paging. Når jeg nu ikke har det, men synes det er ok, at de andre, selv kan beslutte sig for om de vil have det på eller ej, så er det vel nedarving jeg skal bruge?
Og så lige et ps: Tak fordi du gider at hjælpe mig - jeg sætter meget stor pris på det.
men åbenbart ikke hjælp nok til at dele point ud...
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.