0

ma Web サイトに長い GridView コントロールが 1 つあります。行選択を可能にします。問題は、この GridView を下にスクロールして下の行の一部を選択すると、選択が発生しますが、GridView 全体が上にスクロールして戻ることです。

問題を解決するためにこのリンクを参照しますが、GridView コントロールにプロパティを見つけることができません。msdn Linkでも検索します。

このプロパティの場所と問題を解決する方法を教えてください。下のチェックボックスイベントに基づいて行を選択します。チェックボックスをオンにすると、削除および編集ボタンが有効になります。

 protected void ChkChanged_Click(object sender, EventArgs e)
    {

        int count = 0;
        foreach (GridViewRow gr in grdProducts.Rows)
        {

            CheckBox chkGrd = ((CheckBox)gr.FindControl("CheckBox2"));
            ImageButton editbutton = gr.FindControl("btnEdit") as ImageButton;
            ImageButton deleteButton = gr.FindControl("btnDeleted") as ImageButton;
            if (chkGrd.Checked)
            {
                count++;
                editbutton.Visible = true;
                deleteButton.Visible = true;                

                if (count > 1)
                    break;

            }
            else
            {
                editbutton.Visible = false;
                deleteButton.Visible = false;

            }
        }


        if (count > 1)
        {
            foreach (GridViewRow gr in grdProducts.Rows)
            {
                CheckBox chkGrd = ((CheckBox)gr.FindControl("CheckBox2"));
                ImageButton editbutton = gr.FindControl("btnEdit") as ImageButton;
                ImageButton deleteButton = gr.FindControl("btnDeleted") as ImageButton;
                if (chkGrd.Checked)
                {
                    editbutton.Visible = false;
                    deleteButton.Visible = false;
                }
            }

            DeleteAll.Enabled = true;
        }


    }
4

3 に答える 3

0

私は答えを見つけました。

GridViewRow には Focus() メソッドがあります。

 gr.Focus(); 

グリッドビューで選択した行の位置を 95% 設定します。

于 2012-12-28T10:02:24.943 に答える
0

あなたの ' row selection' コードを教えてください。ページ全体をポストバックしますか?そうであれば、GridView を に配置して、UpdatePanel実際にページ全体をリロードせずにイベントがサーバーに送信されるようにしてください。

于 2012-12-28T06:52:49.633 に答える
0

スクロールバーはどこにありますか - ページまたはグリッドビューへ? 可能であれば、グリッド ビューへのスクロール バーを取り除き、ページ レベルでスクロール バーを取得します。このような場合、ページのプロパティであるMaintainScrollPositionOnPostbackを使用して、ポストバックでページのスクロール位置を維持できます。

レイアウトでページにスクロール バーを配置できない場合は、コンテナ div をグリッド ビューに使用し、(テーブル、つまりグリッド ビューではなく) div レベルでスクロール バーを配置することをお勧めします。これで、ページが送信される前に非表示フィールドにスクロール位置を記録できる JS コードを作成し、ポストバック後に同じものを使用して位置を元に戻すことができます。このようなトリックを使用するこのリンクを参照してください: http://michaelsync.net/2006/06/30/maintain-scroll-position-of-div-using-javascript-aspnet-20

于 2012-12-28T08:44:25.820 に答える