如何在 gridview 控件的项目模板中显示列表视图。
gridview 将列出 table_bill 中的所有 bill_id,列表视图将绑定 table_bill_details 中具有特定 item_bill_id 的所有 item_id 和数量。
table_bill 模式
table_bill_details 架构
我需要在用户界面中,如下图所示
如何在 gridview 控件的项目模板中显示列表视图。
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;
}
}
这就是我想要的。感谢大家。