5

gridviewコントロールのアイテムテンプレート内にリストビューを表示する方法。
グリッドビューはtable_billからすべてのbill_idを一覧表示し、リストビューはtable_bill_detailsから特定のitem_bill_idを持つすべてのitem_idと数量をバインドします。
table_billスキーマ

  • bill_id(主キー)
  • bill_date
  • bill_customer_id(このテーブルの外部キー、オリジンテーブルはtable_customerです)
  • table_bill_detailsスキーマ

  • item_id(主キー)
  • item_bill_id(このテーブルの外部キー、Originテーブルはtable_billです)

  • 次の画像に示すように、ユーザーインターフェイスが必要でした

    これは私がユーザーインターフェイスで必要としたものです

    4

    1 に答える 1

    5

    ついに答えが出ました。次のようにしてください...

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

    それが私が欲しかったすべてです。みんな、ありがとう。

    于 2012-04-08T05:46:01.597 に答える