0

SqlDataAdapter を介してデータセットに直接バインドされている Windows フォーム プロジェクトに DataGridview があります。ユーザーが編集できる編集可能な列が1つあり、ユーザーが列を並べ替えない場合にうまく機能します。

ユーザーが列を並べ替えると、基になるデータソースが Datagridview が表示しているものと同期しなくなります。

ユーザーがグリッドビューとデータソースを並べ替えるときに同期を維持するための標準的な手法は何ですか?

ありがとう!

4

2 に答える 2

0

ヘッダーをクリックしてデータグリッドビューをソートすることをトリガーするイベントが見つからないようです。

于 2013-09-13T17:23:31.160 に答える
0

私の理解によると、自動並べ替えは DataGridView では機能しません。並べ替えを実行するには、データソースを並べ替えてから、以下のコードに示すように GridView に再バインドする必要があります。

private void Sort_DataGrid(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
    // Never use Queries like this always use Stored procedures
    SqlCommand myCommand = new SqlCommand("SELECT * FROM Categories", myConnection);
    myCommand.CommandType = CommandType.Text;
    SqlDataAdapter myAdapter = new SqlDataAdapter(myCommand);
    DataSet ds = new DataSet();
    myAdapter.Fill(ds, "Categories");
    DataView dv = new DataView(ds.Tables["Categories"]);
    if ((numberDiv % 2) == 0)
        dv.Sort = e.SortExpression + " " + "ASC";
    else
        dv.Sort = e.SortExpression + " " + "DESC";
    numberDiv++;
    myDataGrid.DataSource = dv;
    myDataGrid.DataBind();
}
于 2013-09-13T16:55:25.410 に答える