How to show listview inside gridview control template.

how to show listview inside gridview control template.
gridview will list all bill_id from table_bill and list view will link all item_id and quantity having specific item_bill_id from table_bill_details.
table_bill table

bill_id (primary key) bill_date bill_customer_id (foreign key of this table, Origin table is table_customer)

table_bill_details schema

item_id (primary key) number of item_bill_id (foreign key of this table, Origin table is table_bill)
I needed in the user interface as shown in the following picture

This is what i needed in user interface

+3


source to share


1 answer


Finally I got my answer. Just do it like this ...

In the .aspx file


<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>

      


In the aspx.cs file




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;
    }

}

      


That's all I wanted. Thanks everyone.

+4


source







All Articles