2016-10-12 6 views
1

Может кто-нибудь, пожалуйста, помогите мне изменить этот код, потому что я попытался запустить, но таблица не появилась на странице. Я новичок в XML, и кто-то дал мне этот фрагмент, говорящий, что XML-кодирование более надежное для таблиц.VB.net как создать таблицу с помощью xml и отобразить таблицу на веб-странице

Код, вероятно, работает, но я не знаю, как его отобразить на странице. Я пробовал искать, но я видел, что многие тоже делали почти то же самое, но почему это не помогло мне? В то время как некоторые другие сделали еще один XML-файл для хранения данных, но в моем случае я фактически планирую извлекать данные из базы данных MS SQL 2005 и отображать их в таблице. Что мне здесь не хватает?

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 

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

Для каждого столбца в строке и последующих строках время должно повторяться на 30 минут. в каждой строке, должна быть 3 колонки так, например значения для

(0,0): 6:00 утра AAAA (0,1) 6:30 утра BBBB (0,2) КЦИК

7:00 утра

(1, 0) 7:30 утра дддд (1,1) ээээ 8:00 утра (1,2) FFFF 8:30 утра

для остальной части графика в день

============== ======================================= ПОСЛЕ МОДИФИКАЦИИ

Мой план состоит в том, чтобы отобразить таблицу и в то же время, когда пользователь нажимает на (свободное/не занятое), пользователь сможет запросить встречу на определенное время и, таким образом, будет выполнен запрос на ввод в базу данных.

Я сделал, как вы предложили. Я также перестроил цикл так, чтобы цикл столбца находился снаружи, а цикл строк - внутри. Я сделал это так, чтобы данные отображались только один раз, а не повторение каждого нового столбца в каждой новой строке. Я отредактировал свой код, как показано ниже, поэтому вам легко понять, что я сделал.

Ваше приращение времени не работало для меня, поэтому я пробовал немного модифицировать, и этот работал. Но проблема в том, что время, отображаемое в первом столбце первой строки, является последним, прошедшим итерацию в цикле (это 11:00:00 - потому что я запросил 10 данных). И в то же время отображается в последнем столбце строки. Значение базы данных первого и последнего также одинаково. Таким образом, другими словами, извлекается и отображается только 9 данных. Почему это происходит?

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 

Ниже, как таблица должна должна выглядеть

<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

где сделал Y ou определить объект таблицы? – SaJed

+0

Функция GetData объявляется как DataTable. Должен ли я помещать placeholder в страницу в качестве объекта таблицы? – Nurul

+0

проверить мой ответ. Сначала я определяю объект таблицы. – SaJed

ответ

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 

использовать это в вашей странице .aspx воздаст Таблица

<%= DrawTable()%> 
+0

Вау! Оно работает! Огромное спасибо! : D Но есть ли способ сделать данные, представленные в таблице, как правило? потому что теперь он выглядит как лестница, а значения некоторых из столбцов являются избыточными. < – Nurul

+0

К сожалению, я понял, что на самом деле мне нужно переструктурировать для каждого цикла. – Nurul

+0

Я просто попытался реализовать 2 значения в td.Value, но я вижу, что выполняется только последний td. Потому что мой план состоит в том, чтобы поместить время в каждую строку (столбец). поэтому я сделал td.Value = row (column) .ToString() td.Value = время. он не работал - только последний td выполняется .. поэтому я попытался поставить в другую переменную tdOpen = и tdClose =, чтобы вставить другую строковую переменную рядом с данными из базы данных (то есть между) Пример: | 8:30 утра aaaa | 9.00am bbbb | есть ли способ, которым я могу это достичь? – Nurul