2016-10-12 2 views
1

Kann jemand bitte mir helfen, diesen Code zu verbessern, weil ich versucht habe zu laufen, aber die Tabelle nicht auf der Seite erschien. Ich bin neu in XML und jemand hat mir dieses Snippet gesagt, dass XML-Codierung für Tabellen zuverlässiger ist.VB.net Wie man eine Tabelle mit XML erstellt und die Tabelle auf der Webseite anzeigt

Der Code funktioniert wahrscheinlich, aber ich weiß nicht, wie es auf der Seite angezeigt wird. Ich habe versucht zu suchen, aber ich sah, dass viele auch fast das Gleiche taten, aber warum funktionierte das nicht für mich? Einige andere haben eine andere XML-Datei erstellt, um die Daten zu behalten, aber in meinem Fall plane ich eigentlich, Daten aus einer MS SQL 2005-Datenbank abzurufen und sie in einer Tabelle anzuzeigen. Was fehlt mir hier?

Dim dt As DataTable = Me.GetData() 
    For Each row As DataRow In dt.Rows 
     Dim tr As XElement = <tr></tr> 

     For Each column In dt.Columns 
      Dim td As XElement = <td></td> 
      td.Value = row(column.Ordinal).ToString() 

      tr.Add(td) 
     Next 

     table.Add(tr) 
    Next 

=========================================== ======

Für jede Spalte in einer Zeile und die nachfolgenden Zeilen sollte die Zeit um 30 Minuten durchlaufen werden. in jeder Reihe, sollte es 3 Spalten sein, so zum Beispiel Wert für

(0,0): 06.00 AAAA (0,1) 06.30 bbbb (0,2) 07.00 cccc

(1, 0) 07.30 dddd (1,1) 08.00 Uhr eeee (1,2) 08.30 ffff

für den Rest Zeitplan des Tages

============== ========================= NACH ÄNDERUNG

Mein Plan ist es, die Tabelle anzuzeigen und gleichzeitig, wann Der Benutzer klickt auf den Avail fähige Zeit (frei/nicht besetzt), der Benutzer wird in der Lage sein, einen Termin für diese bestimmte Zeit anzufordern und somit eine Einfügung zur Datenbankabfrage wird ausgeführt

Ich tat, wie Sie vorgeschlagen. Ich habe auch die Schleife neu angeordnet, so dass die Spaltenschleife auf der Außenseite und die Zeilenschleife auf der Innenseite ist. Ich habe dies getan, damit die Daten nur einmal statt einer Wiederholung jeder neuen Spalte in jeder neuen Zeile angezeigt werden. Ich habe meinen Code wie unten gezeigt bearbeitet, damit Sie leicht verstehen, was ich getan habe.

Ihr Zeitinkrement funktionierte nicht für mich, also habe ich versucht, ein bisschen zu ändern und dieses eine funktionierte. Aber das Problem ist, dass die Zeit, die in der ersten Spalte der ersten Zeile angezeigt wird, die letzte Zeit ist, die in der Schleife durchlaufen wird (das ist 11:00:00 Uhr - weil ich nach 10 Daten gefragt habe). Und es wird die gleiche Zeit in der letzten Spalte der Zeile angezeigt. Der Datenbankwert des ersten und des letzten sind ebenfalls gleich. Mit anderen Worten, nur 9 Daten werden abgerufen und angezeigt. Warum passiert dies?

Public Function DrawTable() As XElement 
    Dim dt As DataTable = Me.GetData() 
    Dim table As XElement = <table></table> 
    Dim tr As XElement = <tr></tr> 
    Dim td As XElement = <td></td> 
    Dim dtTime As DateTime = #6:00:00 AM# 
    Dim timeN = dtTime 

    For Each row As DataRow In dt.Rows  
    For Each column In dt.Columns   
     td.Value = dtTime.ToString() + " " + row(column.Ordinal).ToString() 
     dtTime = dtTime.AddMinutes(30) 
     timeN = dtTime    
     tr.Add(td) 
    Next 

    table.Add(tr) 
    Next 
Return table 
End Function 

Unten ist, wie die Tabelle wie

<table style="border:solid"> 
 
<tr> 
 
<td style='border:groove'>6.00 AM aaaa </td> 
 
<td style='border:groove'>6.30 AM bbbb </td> 
 
<td style='border:groove'>7.00 AM cccc </td> 
 
</tr> 
 
<tr> 
 
<td style='border:groove'>7.30 AM dddd </td> 
 
<td style='border:groove'>8.00 AM eeee </td> 
 
<td style='border:groove'>8.30 AM ffff </td> 
 
</tr> 
 
<tr> 
 
<td style='border:groove'>9.00 AM gggg </td> 
 
<td style='border:groove'>9.30 AM hhhh </td> 
 
<td style='border:groove'>10.00 AM iiii </td> 
 
</tr> 
 
<tr> 
 
<td style='border:groove'> ... </td> 
 
<td style='border:groove'> ... </td> 
 
<td style='border:groove'> ... </td> 
 
</tr> 
 
<tr> 
 
<td style='border:groove'>5.00 AM fffe </td> 
 
<td style='border:groove'>5.30 AM sefs </td> 
 
<td style='border:groove'> </td> 
 
</tr> 
 
</table>

+0

wo tat aussehen sollte y Oder definieren Sie ein Tabellenobjekt? – SaJed

+0

Die GetData-Funktion wird als DataTable deklariert. Muss ich einen Platzhalter als Tabellenobjekt in die Seite einfügen? – Nurul

+0

überprüfen Sie meine Antwort. Ich definiere zuerst Tabellenobjekt. – SaJed

Antwort

1
Public Function DrawTable() As XElement 
    Dim dt As DataTable = Me.GetData() 
    Dim table As XElement = <table></table> 
    Dim tr As XElement = <tr></tr> 
    Dim td As XElement = <td></td> 
    Dim dtTime As DateTime = #6:00:00 AM# 

    For Each row As DataRow In dt.Rows 
     For Each column In dt.Columns 
      dtTime = dtTime.AddMinutes(30) 
      td.Value = dtTime.ToString() + " " row(column.Ordinal).ToString() 
      tr.Add(td) 
     Next 

     table.Add(tr) 
    Next 
    Return table 
End Function 

Verwendung dieses in Ihrer ASPX-Seite Tabelle rendert

<%= DrawTable()%> 
+0

Wow! Es klappt! Vielen Dank! : D Aber gibt es eine Möglichkeit, die Daten in der Tabelle normal darzustellen? denn jetzt sieht es wie eine Treppe aus und die Werte einiger Spalten sind redundant>. < – Nurul

+0

Oops sorry..ich habe gerade gemerkt, dass ich die Schleife für jede Schleife neu strukturieren muss. – Nurul

+0

Ich habe gerade versucht, 2 Werte in den td.Value zu implementieren, aber ich sehe, dass nur die letzte td ausgeführt wird. Weil mein Plan ist, eine Zeit in jeder Reihe (Spalte) zu setzen. also habe ich td.Value = row (spalte) .ToString() td.Value = time. es funktioniert nicht nur für die letzte td ausgeführt wird .. so habe ich versuchte in einem anderen Variable tdOpen = und tdClose =, um in einer anderen Einsatz String-Variable neben den Daten aus der Datenbank setzen (das heißt, zwischen den ) Beispiel: | 8.30 Uhr aaaa | 9.00 Uhr bbbb | Kann ich das irgendwie erreichen? – Nurul

Verwandte Themen