Jump to content
Unity Insider Forum

[c#] DataTable sauber Visualisieren wie es in PHP + SQL möglich ist (die Border) nicht der Inhalt


Recommended Posts

hi

 

ich habe den inhalt einer Sql abfrage sauber in einer Datatable liegen aus der ich auch fehlerfrei zeilenweise auslesen und darstellen kann ( fast :) )

 

doch genau das fast ist mein problem

 

sagen wir das | ist als trennzeichen der zellen zu sehen (nur hier zum darstellen :) )

dann bekomme ich

60|ben68||mail60|3|1|1|1|2|0|0|1|3|5/15/2014 7:10:05 PM|0|4|5/15/2014 8:57:18 PM|4|1|1

als ausgabe in meiner debugconsole.

das stimmt auch mit dem eintrag in der datenbank überein.

 

ich hab so absolut keine idee wie ich daraus nun ein schickes tabellchen like :

http://www.luk-korbm.../din5008_12.htm

machen kann.

das ganze soll dynamisch per schleife gehen je nach

datensatz.Rows.Count

 

hoffe ihr habt ne idee

 

ngui oder unity gui is mir egal

 

 

edit : Thementitel aktualisiert da nicht exakt genug für eine spätere suche des Themas

[c#] DataTable sauber Visualisieren wie es in PHP + SQL möglich ist (die Border) nicht der Inhalt
Link zu diesem Kommentar
Auf anderen Seiten teilen

Das sind doch eigentlich nur zwei for-Schleifen, um zumindest die Grundfunktion zu haben, oder?

 

Sowas z.B. ?

 

public int Zeilen;
public int Spalten;

public float FieldWidth;
public float FieldHeight;

public float TableX;
public float TableY;

public List<string> Text = new List<string>();

void Awake(){
 for(int i=0;i<Zeilen*Spalten;i++){
  Text.Add("Text");
 }
}

void OnGUI(){
 for(int x=0;x<Zeilen;x++){
  for(int y=0;y<Spalten;y++){
int id = x+y*Zeilen;
GUI.Label(new Rect(TableX+x*FieldWidth,TableY+y*FieldHeight,FieldWidth,FieldHeight),Text[id]);
  }
 }
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich glaub das habe ich nicht exakt genug geschrieben :

 

mir geht es ums Design der Tabelle nicht des Zelleninhalt sry aber dank dir :)

 

oder anders gesagt : die Border

 

bei PHP + SQL würde ich so vorgehen : Pseudocode

 

echo "<html><header></header><body>";
foreach($datensatz as $key => $item){
echo "<tr><td>" . $key . "</td><td>" . $item['benutzer'] . "</td><td>" . $item['status'] . "</td></tr>";
}
echo "</body></html>";

dann hätte ich die Tabelle.

 

nur wie bekomme ich eine Tabelle visualisiert ( Zellenbreite kann ich auslesen ). sprich den/die Border

 

ich habe es schon mit Texturen versucht unter NGui aber das Ergebnis ist mir persönlich zu "bescheiden".

 

ich habe den thementitel nochmal angepasst von

 

[c#] DataTable Inhalt sauber ausgerichtet visualisieren in einer GUI ? tabelle

nach

[c#] DataTable sauber Visualisieren wie es in PHP + SQL möglich ist (die Border) nicht der Inhalt
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du Html zur Darstellung nutzen möchtest, dann wäre es gut einen WebView zu nutzen. Dazu müsstest du aber mit Java auf das Android-OS zugreifen.

Hier ein Link https://github.com/kimsama/unity3d-webview-csharp

In einem WebView gibt es dann sicher auch die Möglichkeit von Databinding & mit CSS kann man das ganze dann noch sehr schön formatieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde für die Ansicht je eine GuiTexture pro Zelle mit einem schon in der Texture vorhanden Rahmen benutzen. Und dann einfach den Text in dieser Texture postionieren.

Aber auch nur dann wenn es dynamisch erzeugt werden soll. Wenn du schon die Größe der Tabelle kennst und auch die maximale Länge der Texte, dann würde ich eine einzige Texture für den ganzen Table nutzen. Danach einfach die Texte mit z.b. Labels hinein schreiben.

 

Was ich leider noch nicht getestet habe, ob man mit GUIStyles einen Rahmen um ein GUI-Element ziehen kann.

 

Hoffe ich habe dich jetzt richtig verstanden ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

ja sry, ich bemühe mich das klarer zu beschreiben.

 

ich hab mir ein c# Script gebaut das mir die DataTable entgegennimmt und verarbeitet klappt richtig gut schon :)

 

das mit der Zelle habe ich ähnlich wie du beschrieben hast gelöst mit ner Automatik : der label.text wird automatisch

 

festgelegt auf den Namen des "Mutterobjekt" das ich instanziiere ( das Mutterobjekt repräsentiert die Zelle )

 

Ich arbeite noch an der Spaltenbreite aber das mach ich heute in der Mittagspause

 

wenn bisschen weniger los ist :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Darf ich was zu deinem PHP Snippet anmerken? Vielleicht weisst du es schon...

 

Wenn Du echo mit doppelten Gänsefüsschen benutzt musst du den String nicht immer wieder unterbrechen.

echo "<tr><td>$key</td><td>$item[benutzer]</td><td>$item[status]</td></tr>";

Geht genau so gut

 

Sollte passen, ist eine Variable "komplizierter" haust Du noch {} drum rum:

echo "<span>{$something}</span>";

 

 

Aber alles das ist nicht wirklich sauber. Richtig übersichtlich und lesbar ist es eigentlich nur so:

<html>
 <header></header>
   <body>
  <table>
    <?php foreach($datensatz as $key => $item): ?>
	  <tr>
	    <td><?php echo $key?></td>
	    <td><?php echo $item['benutzer']?></td>
	    <td><?php echo $item['status']?></td>
	  </tr>
    <?php endforeach; ?>
  </table>
 </body>
</html>

Das versteht auch ein Web-Grafiker und er kann damit noch immer sauber gestalten.

 

Cheers

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, ich hab für ProfileIt mal eine Tabelle geschrieben und für jemanden isoliert:

 

9c860466-320f-4d3c-99c1-b08f429c5f71_scaled.jpg

 

Download:

https://dl.dropboxusercontent.com/u/2446365/Table.rar

 

Zur Verwendung bin ich mir momentan nicht 100% sicher wie es funktioniert, aber ich glaube ich versuche es einfach mal:

 

TableUI Klasse instanzieren und mithilfe der AddColumn und AddRow Methoden füllen.

 

Column gibt quasi den Header an. Also Breite, Text, ist es sortierbar, ist der Column Scrollbar (ich nehme an horizontal).

 

Row enthält dabei alle Zellen für die Row (sollte der Anzahl Columns entsprechen). Dabei ist jede Row ausklappbar, was es ermöglicht unter Rows zur Row zu haben (brauchst du vermutlich nicht).

 

Wenn alles befüllt ist kannst du Update an der TableUI instanz aufrufen und es sollte alles rendern (in OnGUI).

 

private TableUI table;
...
var column = table.AddColumn("Spalte1");
...
column = table.AddColumn("Spalte2");
...
var row = table.AddRow();
row.AddCell("Wert");
row.AddCell("Blabla");
row.AddCell(3.141);

void OnGUI() {
 table.Update(displayRect);
}

 

Die Zellen kannst du selbst designen, also was dort gerendert werden soll und was für Daten da rein kommen, etc. Aber darauf gehe ich erstmal nicht weiter ein ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...