グリッドビューには複数の列があり、そのうち3つは並べ替えたいものです。 データのソースはセッションで保持されます。グリッドビューと動的linqの並べ替え
protected void MyGridHistorySort(object sender, GridViewSortEventArgs e)
{
var TheColumn = (e.SortExpression).ToString();
TheDataHistory = (List<ViewDataHistoryModel>)Session["SessionDataHistory"];
var test = "data.DataDate";
var NewDataSource = from data in TheDataHistory
orderby test
select data;
MyGridHistory.DataSource = NewDataSource;
MyGridHistory.DataBind();
DataDateはリスト内の有効な列ですが、orderby文は機能しません。理想的には、変数「TheColumn」を使って、test = "data" + TheColumのようなものを書いて並べ替えたいと思います。ブール値に基づいて並べ替え方向を追加します。私はOrderBy拡張メソッドNewDataSource.OrderBy(test)を見ました。しかしそれはどちらもうまくいかない。
私のコードを動作させるには、何が欠けていますか?
ありがとうございました。
つの列のために働くいや、私はそれを他のすべての列に対して機能させ、orderbyに文字列パラメータを取らせたいと思います。 OrderBy拡張メソッドはどのように機能しますか? – frenchie
この場合、私はおそらくorderby節なしで同じステートメントを使用して、引数を介して渡されるフィールドによって注文するswitchステートメントを持っています。私はこれを示すために私の答えを編集しています... – khr055
私はちょうどスイッチの節でそれをしました。私はそれを行うより良い方法がなければならないことを知っていますが、今のところそれは機能します。準最適なコードですが、今は大丈夫です。 – frenchie