HTML und ASP.Net: Tabelle bzw. GridView fixieren
-
Hallo Forum
ich habe ein GridView und möchte, dass die Zeilenanzahl immer die gleiche bleibt, egal wieviele Daten ich aus meiner Datenbank zurückbekomme. Im Moment ist es so, dass der Rahmen des GridView bleibt, aber meine Zeilenanzahl sich ändert je nachdem wieviele Zeilen aus der Datenbank durch meine Abfrage zurückkommen. Also habe ich mal 2 Zeilen, mal 4 Zeilen, und mein GridView passt sich ständig an. Das will ich aber nicht. Gibt es eine Möglichkeit das GridView zu fixieren, was die Zeilenanzahl anbelangt?
Danke für eure Hilfe!
-
Meinst Du einen DataPager o.ä.?
-
Damit habe ich es schon versucht, sobald ich aber mein GridView an einen Datensatz binde ignoriert er alle vorher angegebenen Sachen wie Row height, width u.s.w. Da ist es ihm auch egal dass ich beim DataPager 10 Zeilen angegeben habe.
-
Hat eher was mit NET zu tun auch wenn es WEB ist.
Pager ist Standard auf 10.
Du musst Ihn aber auch aktivieren.
ROW-Hight u.s.w. wird durch ein DataSource sicher nicht verändert.
GridView wird komplett in der ASPX definiert und nicht durch ein DataSource.Wenn du eine Pager hast dann musst Du auch einige Events definieren. Na wirst schon sehen wenn der Error kommt.
Als DataSource werden alle Daten der DB übergeben. Also dort kein Limit setzen.
-
Also mein Problem ist, dass sich das GridView dem Datensatz anpasst, den ich über die Datenbank bekomme. Ich habe einen Filter implementiert, mit dem ich eben mal nur eine Zeile, manchmal drei Zeilen oder auch mehrere aus der Datenbank zurückbekomme. Das Gridview passt sich dann "leider" immer der Zeilenanzahl an. Es bleibt in seiner allgemeinen Größe gleich, nur eben die Zeilenanzahl ist manchmal 1, manchmal 5, und dementsprechend sieht das dann besch.... aus wenn es dargestellt wird, da die Zeilen dann auf die Gesamtgröße des Grids verteilt werden und somit eben ganz unterschiedliche Größe haben können. Hier mein Code:
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { dataTable = tableAdapter.GetImportantMeanList(); GridView1.DataSource = dataTable; GridView1.DataBind(); } protected void DropDownList2_SelectedIndexChanged1(object sender, EventArgs e) { string szValue = DropDownList2.SelectedValue.ToString(); dataTable = tableAdapter.GetDataByOwner(szValue); GridView1.DataSource = dataTable; GridView1.DataBind(); }
Wie bringe ich jetzt mein GridView dazu, immer die gleichen Zeilenanzahl beizubehalten, auch wenn in der dataTable weniger Zeilen stehen? Geht das überhaupt oder muss ich das ganze mit einem anderen Element darstellen als mit einem GridView?
-
DU kannst für jede SPalte auch eine Fixe größe angeben.
Problem dabei: Du müsstest sowieso das größe aus der DB nehmen.
Du kannst aber dynamisch die größe änderen. Schau dir mal die Events beim Grid an.
Bevor eine Zeile eingefügt wird gibt es eines. Kann es dir auch sagen welches aber der Lerneffekt du weißt ja.
-
Hmm, o.k., ich glaube mein Problem wird nicht ganz klar oder ich verstehe nicht worauf du hinaus willst:
Meine Spaltenanzahl bleibt immer gleich, nur meine Zeilenanzahl ändert sich, je nachdem was ich aus der Datenbank filtere. Was ich möchte ist mehr oder weniger eine statische Tabelle die immer aus 5 Spalten und 10 Zeilen besteht, egal was aus der Datenbank zurückkommt. Da ich Spalten habe die NON NULL Werte haben, kann ich auch nicht einfach die dataTable mit leeren Zeilen auffüllen (wäre getrickst, aber immerhin hätte ich dann die feste Größe meines Grids). Ich weiss dass das Grid über verschiedene Events verfügt, aber ich habe noch keines gefunden dass dafür sorgt, dass sich die Größe des Grids nicht ändert. Wenn ich das GridView soweit verstanden habe passt es sich immer den Daten an, die von der Datenbank zurückkommen. Wenn diese Daten eben nur zwei Zeilen enthalten dann hat auch das GridView nur zwei Zeilen. Und wenn es beim nächsten Abruf 5 Zeilen gibt hat das GridView 5 Zeilen. Und soweit ich das gesehen habe lässt sich das nicht ändern. Ist das korrekt?
-
Bau doch ein div um das Grid mit fester Grösse und selber Hintergrundfarbe wie das Grid.
Dann sieht es zumindest so aus, als wenn es gleich gross bleibt.
Ansonsten macht die DB-Abfrage nicht direkt, sondern pack das in eine Werte-Klasse.
Die kannst du dann auch mit leeren Werten auffüllen.
-
Ohne das Du die Zeilen mit Null auffüllst wirst du keine 10 Zeilen im Grid haben.
Wenn du nur die Höhe des Grids immer gleich haben möchtest dann gibt die Höhe an.
Dann ist es egal wieviele Zeilen du hast.
-
Ja, genau sowas dachte ich mir schon. Da ich aber Spalten habe die NOT NULL definiert sind kann ich nicht einfach Zeilen einfügen mit null-werten, da er dann meckert. So wie es aussieht muss ich mir da einen Workaround einfallen lassen. Mit DataReader die Daten einlesen und jede einzelne Zelle dann in eine HTML-Tabelle einfügen oder so.
-
Jockelx schrieb:
Ansonsten macht die DB-Abfrage nicht direkt, sondern pack das in eine Werte-Klasse.
Die kannst du dann auch mit leeren Werten auffüllen.