0

ボタンをクリックしてグリッドビューの行を上下に移動したいのですが、これに従いました

http://www.aspdotnet-suresh.com/2012/06/move-aspnet-gridview-rows-up-and-down.html

そしてそれはうまくいっています。ただし、グリッドビューで並べ替えを有効にしています。列がソートされている場合、行は上下に移動しません。列がソートされている場合でもグリッドビューの行が上下に移動するように実装する方法を誰かが提案できますか?

ありがとう、

4

2 に答える 2

2

これは、グリッド ビューで行を上下に移動する別の方法です。

if (e.CommandName == "UP")
        {
        Button btnup = (Button)sender;
        GridViewRow row = (GridViewRow)btnup.NamingContainer;
        var rows = id.Rows.Cast<GridViewRow>().Where(a => a != row).ToList();
        switch (e.CommandName)
        {
            case "UP":
                if (row.RowIndex.Equals(0))
                    rows.Add(row);
                else
                    rows.Insert(row.RowIndex - 1, row);
                break;
            case "Down":
                if (row.RowIndex.Equals(id.Rows.Count - 1))
                    rows.Insert(0, row);
                else
                    rows.Insert(row.RowIndex + 1, row);
                break;
        }
    }
于 2012-10-17T06:01:29.283 に答える
1

古い投稿ですが、コメントするのに十分な担当者がいません。Pratiksの回答は、Downコマンドが最初のifステートメント内に構築されているため、UPコマンドのみを起動します...必要があります。

Button btnup = (Button)sender;
GridViewRow row = (GridViewRow)btnup.NamingContainer;
var rows = id.Rows.Cast<GridViewRow>().Where(a => a != row).ToList();
if (e.CommandName == "UP")
    {
            if (row.RowIndex.Equals(0)) {
                rows.Add(row);}
            else {
                rows.Insert(row.RowIndex - 1, row); }
    }
}
else if (e.CommandName == "DOWN")
{
            if (row.RowIndex.Equals(id.Rows.Count - 1)) {
                rows.Insert(0, row);}
            else {
                rows.Insert(row.RowIndex + 1, row);}
}
于 2015-09-04T10:50:56.567 に答える