更新后滚动条还在原来编辑的记录处

 asp.net 1.1 必须用脚本

//页面头部
   <!--
    function SetCookie(sName, sValue)
    {
        date = new Date();
        s = date.getDate();
        date.setDate(s+1);            //expire time is one month late!, and can't be current date!
        document.cookie = sName + "=" + escape(sValue) + "; expires=" + date.toGMTString();
    }
    function GetCookie(sName)
    {
        // cookies are separated by semicolons
        var aCookie = document.cookie.split("; ");
        for (var i=0; i < aCookie.length; i++)
        {
        // a name/value pair (a crumb) is separated by an equal sign
        var aCrumb = aCookie[i].split("=");
        if (sName == aCrumb[0]) {
            return unescape(aCrumb[1]);}
        }
        
        // a cookie with the requested name does not exist
        return null;
    }

    function fnLoad()
    {
        var top=0;
        document.body.scrollLeft = GetCookie("scrollLeft");     
        top=GetCookie("scrollTop"); 
        document.documentElement.scrollTop=top;      
        document.body.scrollTop=top;
    }

    function fnUnload()
    {
        var top=0;     
        if (document.documentElement && document.documentElement.scrollTop)
        {
            top=document.documentElement.scrollTop;
        }
        else if (document.body && document.body.scrollTop)
        {
            top=document.body.scrollTop
        }
        SetCookie("scrollLeft", document.body.scrollLeft) ;
        SetCookie("scrollTop", top) ;  
    }
   
    //window.onload = fnLoad;
    window.onunload = fnUnload;

    // -->


//页面尾部:

<script language="javascript">
fnLoad() ;
</script>

2.asp.net 2.0

<%@ Page MaintainScrollPositionOnPostback="true" %>

在 C# 中,DataGridView 控件通常用于显示来自数据库或其他数据源的数据,并允许用户进行编辑。当用户单击某一行进行编辑时,GridView 会进入编辑模式,允许用户修改该行的值。为了保持焦点在所选行并保留滚动位置,你需要实现以下几个步骤: 1. **设置 `AutoGenerateColumns` 属性**:如果你的数据网格列是由 DataGrid 来自动生成的,确保 `AutoGenerateColumns="False"`,以便手动控制列的行为。 2. **启用 `EditingControlMode` 和 `SelectionMode`**: ```csharp dataGridView.EditingControlMode = DataGridViewEditingControlMode.CellsOrRows; dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; ``` 3. **理 `CellEndEdit` 或 `RowValidated` 事件**: - 在 `CellEndEdit` 事件中,可以检查当前单元格是否已更改,然后将其滚动到可视范围内: ```csharp private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (dataGridView.CurrentCell.RowIndex != -1) { // 获取可视范围的上下边界 int firstVisibleRowIndex = dataGridView.FirstDisplayedScrollingRowIndex; int lastVisibleRowIndex = dataGridView.LastDisplayedScrollingRowIndex; // 如果编辑后的行仍在此范围内,滚动到该行 if (firstVisibleRowIndex <= dataGridView.CurrentRow.Index && dataGridView.CurrentRow.Index <= lastVisibleRowIndex) dataGridView.FirstDisplayedScrollingRowIndex = dataGridView.CurrentRow.Index; } } ``` - 对于 `RowValidated` 事件,确保在验证完成后调整滚动条: ```csharp private void dataGridView_RowValidated(object sender, DataGridViewCellEventArgs e) { // 同样滚动条逻辑 } ``` 4. **理 `Leave` 事件**: 确保用户离开编辑状态时,滚动条返回到之前的位置。这可以在 `Leave` 事件或类似事件中完成。 记住,在实际应用中,你还需要理异常情况和适当的错误理,以及可能需要禁用某些操作(如删除、插入等)以防意外影响用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值