【问题标题】:Is FirstDisplayedScrollingRowIndex property in GridView Control?GridView 控件中的 FirstDisplayedScrollingRowIndex 属性是什么?
【发布时间】:2025-12-07 15:45:01
【问题描述】:

我在 ma 网站上有一个长的 GridView 控件。它允许行选择。问题是,当我向下滚动此 GridView 并选择一些底部行时,会发生选择,但整个 GridView 正在滚动回顶部。

我参考this link 来解决我的问题,但无法在 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;
        }


    }

【问题讨论】:

  • 把gridview放到更新面板试试。
  • @sajanyamaha:我试过了,但是当我在 gridview 中选择行时它会移到最前面。

标签: c# asp.net gridview


【解决方案1】:

您能否提供您的“row selection”代码,是否将整个页面发回,如果是,请尝试将 GridView 放在UpdatePanel 中,以便将事件发送到服务器而无需实际重新加载整个页面页面。

【讨论】:

  • 基于复选框选择我的行是选择。
  • 我猜复选框的autoPostBack是“True”,试试“False”
  • 基于复选框事件我需要在这里执行一些操作我把我的复选框选中事件代码。
【解决方案2】:

滚动条在哪里 - 到页面还是到网格视图?如果可能,摆脱网格视图的滚动条并在页面级别获得滚动条。在这种情况下,您可以使用MaintainScrollPositionOnPostback,它是一个页面属性,它在回发时保持页面的滚动位置。

如果您的布局不允许您在页面上有滚动条,那么我建议您在网格视图中使用容器 div 并在 div 级别使用滚动条(而不是表格,即网格视图) 等级。现在,您可以有一些 JS 代码,可以在页面提交之前将滚动位置记录到隐藏字段中,然后同样可以在 post-back 后使用来恢复位置。请参阅此链接,它使用了这种技巧:http://michaelsync.net/2006/06/30/maintain-scroll-position-of-div-using-javascript-aspnet-20

【讨论】:

  • 在 div 上滚动。我设置了 MaintainScrollPositionOnPostback = true 。但它只适用于 Page。它不适用于 DIV 内的 gridview。
  • @SaroopTrivedi,请参阅另一个链接(最后一句)-回答如何保持 div 的滚动位置。
【解决方案3】:

我找到了答案。

在 GridViewRow 中有 Focus() 方法。

 gr.Focus(); 

这是 95% 在您的 gridview 选定行中设置位置。

【讨论】:

    最近更新 更多