gridviewコントロールのアイテムテンプレート内にリストビューを表示する方法。
グリッドビューはtable_billからすべてのbill_idを一覧表示し、リストビューはtable_bill_detailsから特定のitem_bill_idを持つすべてのitem_idと数量をバインドします。
table_billスキーマ
table_bill_detailsスキーマ
次の画像に示すように、ユーザーインターフェイスが必要でした
gridviewコントロールのアイテムテンプレート内にリストビューを表示する方法。
グリッドビューはtable_billからすべてのbill_idを一覧表示し、リストビューはtable_bill_detailsから特定のitem_bill_idを持つすべてのitem_idと数量をバインドします。
table_billスキーマ
table_bill_detailsスキーマ
ついに答えが出ました。次のようにしてください...
.aspxファイル内
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemStyle BackColor="#C2D88B" Width="250px" />
<ItemTemplate>
<div class="id">
<asp:Label ID="Label3" runat="server" Text='<%# Eval("bill_id") %>' ></asp:Label>
</div>
<div class="ex">
<p>
<asp:ListView ID="ListView1" runat="server">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("item_id") %>'></asp:Label>
<asp:Label ID="Label2" runat="server" Text='<%# Eval("quantity") %>'></asp:Label>
</ItemTemplate>
<ItemSeparatorTemplate>
<br />
</ItemSeparatorTemplate>
</asp:ListView>
</p>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
aspx.csファイル
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataSet ds = new DataSet();
DataTable bill = new DataTable();
bill.TableName = "cc";
DataTable details = new DataTable();
details.TableName = "ii";
//Run necesserry commands to fill cc with values from table_bill & ii with values from table_bill_details
ds.Tables.Add(catogory);
ds.Tables.Add(item);
DataRelation rel = new DataRelation("test", ds.Tables["cc"].Columns["bill_id"], ds.Tables["ii"].Columns["bill_id"]);
ds.Relations.Add(rel);
this.GridView1.DataSource = ds.Tables["cc"];
GridView1.DataBind();
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
ListView inner = e.Row.FindControl("ListView1") as ListView;
DataRowView drv = e.Row.DataItem as DataRowView;
DataRow[] rows = drv.Row.GetChildRows("test");
ArrayList lst = new ArrayList();
for (int i = 0; i < rows.Length; i++)
{
Item ii = new Item(rows[i][2].ToString(), rows[i][1].ToString(), rows[i][0].ToString());
lst.Add(ii);
}
inner.DataSource = lst;
inner.DataBind();
//drv.Row.
}
}
class Item
{
string quantity;
public string Quantity
{
get { return quantity;}
set { quantity = value; }
}
string item_id;
public string Bill_id
{
get { return item_id;}
set { item_id = value; }
}
string bill_id;
public string Bill_id
{
get { return bill_id;}
set { bill_id = value; }
}
public Item(string quantity, string bill_id)
{
this.quantity = quantity;
this.item_id = item_id;
this.bill_id = bill_id;
}
}
それが私が欲しかったすべてです。みんな、ありがとう。