次のコードを使用して、次のlinqを使用してデータグリッドビューをエンティティフレームワーククエリにバインドしています。
private void EquipmentFinder_Load(object sender, EventArgs e)
{
SetupCategories();
productgridview.RowTemplate.Height = 130;
var products = from prods in axe.product1
select new
{
productid = prods.product_Id, //0
productnam = prods.product_Name, //1
productimage = prods.product_Image, //2
productprice = prods.product_Price,//3
productdescr = prods.product_Description, //4
};
productbindingsource.DataSource = products;
productgridview.DataSource = productbindingsource;
productgridview.Columns[0].Visible = false;
productgridview.Columns[4].Visible = false;
}
商品ID、商品画像、商品名、商品説明、商品価格の列があります。
クライアントの目的で一部の列が表示されないようにしました。
次に、列ヘッダーをクリックして列を並べ替えます...。
注:ここでは、product.imageはデータベースに配列のバイトとして格納されています...。
バイトを比較してそのようにソートする方法がわかりません。
誰かがこれを手伝ってくれるだろう......
どうもありがとう...
変更されたコード:
private void productgridview_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridViewColumn newcolumn = productgridview.Columns.GetColumnCount(DataGridViewElementStates.Selected) == 1 ? productgridview.SelectedColumns[0] : null;
DataGridViewColumn oldColumn = productgridview.SortedColumn;
ListSortDirection direction;
if (oldColumn != null)
{
// Sort the same column again, reversing the SortOrder.
if (oldColumn == newcolumn &&
productgridview.SortOrder == SortOrder.Ascending)
{
direction = ListSortDirection.Descending;
}
else
{
// Sort a new column and remove the old SortGlyph.
direction = ListSortDirection.Ascending;
oldColumn.HeaderCell.SortGlyphDirection = SortOrder.None;
}
}
else
{
direction = ListSortDirection.Ascending;
}
productgridview.Sort(newcolumn, direction);
newcolumn.HeaderCell.SortGlyphDirection =
direction == ListSortDirection.Ascending ?
SortOrder.Ascending : SortOrder.Descending;
}
エラーが発生しました:引数NUll例外が処理されませんでした..
Value cannot be null.
Parameter name: dataGridViewColumn
誰かがこれを手伝ってくれるだろう...