2

私は周りを探していて、いくつかのアイデアを期待していました-私は現在、onselectingコマンドでデータを取得するlinqデータソースからソースを取得するグリッドビューを持っています。しかし、私はグループ化を実装しようとしています...

これをどのように行うべきかについての疑似コードまたはポインターはありますか?頭から離れると、私のコードは次のようになります。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataSourceID="LinqDataSource1" EmptyDataText="There are no data records to display.">

..列の設定と終了グリッドビュータグ、次にlinqdatasource .. ..

<asp:LinqDataSource ID="LinqDataSource1" runat="server" onselecting="LinqDataSource_Selecting" > 

.csページに移動します。

public void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
var db = new MyDataContext())
var orders = from order in db.tbl_orders 
select new {(order.Id, order.customer, order.state);
e.Result = orders;
}

私はこれらすべての中でグループをどこにどのように実装するかを理解しようとしています。私が見たほとんどの例では、linqDataSourceコードでグループ化を行うか(onSelectingに関係していると思われる楽しいエラーが発生します)、X製品を購入することをお勧めします。注文を州ごとにグループ化しようとしているので、最終結果は次のようになります。

California (3 orders)
ID Order
ID Order
ID Order
Montana (1 orders) 
ID Order

ありがとう!

4

1 に答える 1

0

こんにちは、これはあなたがそれを行う方法の例です

        public void Button_Click()
    {
        List<Order> ods = new List<Order>{new Order(){State="cali",ID=1},
                new Order(){State="cali",ID=2},
                new Order(){State="nali",ID=3},
                new Order(){State="pali",ID=4},
                new Order(){State="pali",ID=5},
        };
        List<Grouping> groups = new List<Grouping>();
        var orders = ods.GroupBy(g => g.State);
        foreach (var order in orders)
        {
            Grouping group = new Grouping() { State = order.Key, Orders = new List<Order>(), IDs = new List<int>() };
            order.ToList().ForEach(o => { group.Orders.Add(o); group.IDs.Add(o.ID); });
            groups.Add(group);
        }

    }
    public class Grouping
    {
        public string State { get; set; }
        public List<Order> Orders { get; set; }
        public List<int> IDs { get; set; }
    }
    public class Order
    {
        public string State
        {
            get;
            set;
        }
        public int ID
        {
            get;
            set;
        }
    }

これは、dataSource とクラスが異なることを除いて、まさにあなたが望むことを行いますが、ロジックは同じです。これがアイデアを得るのに役立つことを願っています。

于 2012-07-18T02:12:25.217 に答える