/ / Създаване на таблици и показване на текстови полета в codebehind - c #, asp.net

Създаване на таблици и показване на текстови полета в codebehind - c #, asp.net

Имам набор от данни от базата данни, която искамза показване. Целта ми е да покажа данни на месец на ассс страница използвайки VS 2005 с 5 дни за всеки ред. Написах кода като този, но аз съм объркан с i и j. Този код не показва нищо.

if (ds != null && ds.Tables[0].Rows.Count > 0)
{
Table table = new Table();
table.ID = "Table1";

TableRow row = new TableRow();
TableCell cell = new TableCell();
TextBox tb1 = new TextBox();
TextBox tb2 = new TextBox();

// I am not sure what i and j should be here to display 5 per each row..
for (int i = 0; i < 5; i++)
{
if (int j == 0; j < ds.Tables[0].Rows.Count; j ++)
{

tb1.ID = "txtDateRow" + x + "Col" + j;
tb1.Text = ds.Tables[0].Rows[x]["Date"].ToString();
tb2.ID = "txtDetails" + x + "Col" + j;
tb2.Text = ds.Tables[0].Rows[x]["AmountSold"].ToString();
cell.Controls.Add(tb1);
cell.Controls.Add(tb2);
table.Rows.Add(row);
}
}
Panel1.Controls.Add(table);
}

Ако някой може да ми помогне да разреша това, наистина го оценявам. Благодаря много.

Отговори:

1 за отговор № 1

row.Controls.Add (cell) липсва. Скоростта на този контрол на текстовите полета не се добавя към таблицата и не можете да видите нищо. Добавете този ред и това ще ви помогне да видите. По-късно можете да помислите за i & j.


0 за отговор № 2

Имате линия с брояч, а именно, i но тествате за j==0 какво е j? е j някъде? е j дори обявени? Ако не, сигурен ли си, че не искаш да тестваш i == 0 ?

Това е причината, поради която не получавате никакви резултати в цикъла за. Кодът:

 tb1.ID = "txtDateRow" + x + "Col" + j;
tb1.Text = ds.Tables[0].Rows[x]["Date"].ToString();
tb2.ID = "txtDetails" + x + "Col" + j;
tb2.Text = ds.Tables[0].Rows[x]["AmountSold"].ToString();
cell.Controls.Add(tb1);
cell.Controls.Add(tb2);
table.Rows.Add(row);

В състояние е:

if (j == 0)

Въпросът е дали това условие се случва някога? Ако е така, трябва да публикувате повече код. Отстранете кода си и задайте прекъсвачи и гледайте как се изпълнява. Съгласно редакцията си публикувахте:

if (int j == 0; j < ds.Tables[0].Rows.Count; j ++)

Това дори не е валидно, мисля, че трябва да вземете книга за синтаксиса C #, преди да се справите с този проблем.


0 за отговор № 3

Аз не съм сигурен какво "x" се очаква да бъде във вашия код.Мисля, че общата структура трябва да бъде нещо като това, но кодът по-долу ще добави същото нещо за всяка колона:

if (ds != null && ds.Tables[0].Rows.Count > 0)
{
Table table = new Table();
table.ID = "Table1";

// j is the row index
for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
{
TableRow row = new TableRow();

// i is the column index
for (int i = 0; i < 5; i++)
{
TableCell cell = new TableCell();
TextBox tb1 = new TextBox();
TextBox tb2 = new TextBox();

tb1.ID = "txtDateRow" + j + "Col" + i;
tb1.Text = ds.Tables[0].Rows[j]["Date"].ToString();
tb2.ID = "txtDetails" + j + "Col" + i;
tb2.Text = ds.Tables[0].Rows[j]["AmountSold"].ToString();
cell.Controls.Add(tb1);
cell.Controls.Add(tb2);

row.Cells.Add(cell);
}

table.Rows.Add(row);
}
Panel1.Controls.Add(table);
}