本当にありがとうございます。これは私の問題です:asp.netで動的テーブルにデータを設定していますか?
私は製品オブジェクトのArrayListを持っています。各製品にはID、名前、サプライヤがあります。 私はarraylistを繰り返し、この値をセルに入れるテーブルを作成すると、製品に複数のサプライヤが存在するという問題が発生します。この場合、idとnameは同じですが、arraylistのサプライヤとは異なるものです。 これまでのところ私のコードでは、idとnameの空のセルを作成し、もう一方のサプライヤを新しいセルに入れることでこれを処理しています。
しかし、すべてのサプライヤのために新しい行を作成するのは良くありません。私が望むのは、製品に複数のサプライヤがある場合、製品IDの行の同じセルにすべてのサプライヤを欲しいということです。
string id = string.Empty;
int count = 0;
public void CreateResultTable(ArrayList result)
{
TableRow row;
TableCell cell;
if (result != null && result.Count > 0)
{
foreach (Item item in result)
{
if (count == 0)
{
row = new TableRow();
id = item.id;
cell = new TableCell();
cell.Text = item.id;
row.Cells.Add(cell);
cell = new TableCell();
cell.Text = item.product;
row.Cells.Add(cell);
cell = new TableCell();
ArrayList levList = item.suppliers;
if (levList != null)
{
string lev = string.Empty;
for (int i = 0; i < levList.Count; i++)
{
lev += levList[i];
}
cell.Text = lev;
row.Cells.Add(cell);
}
else
cell.Text = string.Empty;
row.Cells.Add(cell);
count++;
}
else if (id != item.id)
{
row = new TableRow();
id = item.id;
cell = new TableCell();
cell.Text = item.id;
row.Cells.Add(cell);
cell = new TableCell();
cell.Text = item.product;
row.Cells.Add(cell);
cell = new TableCell();
ArrayList levList = item.suppliers;
if (levList != null)
{
string lev = string.Empty;
for (int i = 0; i < levList.Count; i++)
{
lev += levList[i];
}
cell.Text = lev;
}
else
cell.Text = string.Empty;
row.Cells.Add(cell);
}
else
{
row = new TableRow();
cell = new TableCell();
cell.Text = string.Empty;
row.Cells.Add(cell);
cell = new TableCell();
cell.Text = string.Empty;
row.Cells.Add(cell);
cell = new TableCell();
ArrayList levList = item.suppliers;
if (levList != null)
{
string lev = string.Empty;
for (int i = 0; i < levList.Count; i++)
{
lev += levList[i];
}
cell.Text = lev;
row.Cells.Add(cell);
}
else
cell.Text = string.Empty;
row.Cells.Add(cell);
}
SearchResultLev.Rows.Add(row);
}
SearchResultLev.Visible = true;
SearchResult.Visible = false;
NoSearchResult.Visible = false;
}
else
{
SearchResultLev.Visible = false;
SearchResult.Visible = false;
NoSearchResult.Visible = true;
}
}
私はsql.Plsでグルーピングの原因を使用してサプライヤを選択できると思います – kbvishnu
Harie - 私はデータベースにアクセスできませんので、コードで行うことができれば本当にいいと思います。それが不可能なら、私は原因がデータベースにアクセスする必要があります。 – Andy