Asp.net 将gridview置于updatepanel上

Asp.net 将gridview置于updatepanel上,asp.net,gridview,updatepanel,Asp.net,Gridview,Updatepanel,首先,我是ASP.NET的初学者。我知道很多经典的ASP 我正在开发一个应用程序/框架oracle实用程序。在过去,我在经典ASP中创建了“剪辑”,即GridView。网页上有多个剪辑。所有这些GridView都有页面索引。此时,每个网格显示5条记录。所以如果有18条记录,那么就有4页 分页、数据绑定等工作正常 但我已经说过,一页上有几个剪辑。例如,用户希望查看页面中间的剪辑。当他点击该剪辑的下一页时,执行提交,整个页面被提交并定位在页面顶部。这对用户不友好,因为用户必须搜索/向下滚动到他正在查

首先,我是ASP.NET的初学者。我知道很多经典的ASP

我正在开发一个应用程序/框架oracle实用程序。在过去,我在经典ASP中创建了“剪辑”,即GridView。网页上有多个剪辑。所有这些GridView都有页面索引。此时,每个网格显示5条记录。所以如果有18条记录,那么就有4页

分页、数据绑定等工作正常

但我已经说过,一页上有几个剪辑。例如,用户希望查看页面中间的剪辑。当他点击该剪辑的下一页时,执行提交,整个页面被提交并定位在页面顶部。这对用户不友好,因为用户必须搜索/向下滚动到他正在查看的剪辑

如果我正在寻找,我不知道我说的是否正确,将剪辑的每个gridview绑定到他自己的更新面板,这样,如果用户单击某个gridview的下一页,只有该gridview被刷新,而不是整个页面

代码如下:

namespace Lodestar.Web.WebParts {
    public class CustomerCustomWebpartGasGVExSub : WebPart {
        //define variables

        private GridView CustConGrid;
        //I have defined this by myself
        private UpdatePanel UpdatePanel1;

        private LiteralControl LinkBox;

        public override string Title {
            get {
                return _title;
            }
            set {
                _title = value;
            }
        }

        //construtor
        public CustomerCustomWebpartGasGVExSub() {}

        protected override void CreateChildControls() {
            Controls.Clear();

            //Create the contract view.
            CustConGrid = new GridView();
            CustConGrid.EnableTheming = true;
        CustConGrid.SkinID = "CompacGrid";
        CustConGrid.PageSize = 5;
        CustConGrid.AllowPaging = true;
        CustConGrid.AutoGenerateColumns = false;
        CustConGrid.EmptyDataText = I18n.FM("GVClip_NoContracts");

        //I have defined this by myself    
        UpdatePanel1 = new UpdatePanel(); 

        //Create the db instance and retrieve the Customer UID and ID from the session page.
        ....
        using (DataTable dt = db.GetEntity("CUSTOMER", filter)) {
            //Retrieve the Customer information from the database.
            ....                
            //Render the contract table panel.

            using (DataTable cdt = TableFromReader(cdb.GetDataReader(xslFileGasGV, "StoredProcedure", lsdbparams, 9999, 1))) {

            }

            //Contract ID
            HyperLinkField ContractIdFld = new HyperLinkField();
            ContractIdFld.HeaderText = I18n.FM("ContractID");
            ContractIdFld.DataTextField = "CONTRACTID";
            ContractIdFld.DataNavigateUrlFields = new string[] {"UIDC"};
            string url = string.Format("~/..../..../......asp?SessionId={0}", HttpContext.Current.Server.UrlEncode(SessionContext.Id));
            ContractIdFld.DataNavigateUrlFormatString = url + "&UIDC={0}";
            CustConGrid.Columns.Add(ContractIdFld);

            //Revision
            BoundField RevisionFld = new BoundField();
            RevisionFld.HeaderText = I18n.FM("GRevision");
            RevisionFld.DataField = "REVISION";
            CustConGrid.Columns.Add(RevisionFld);

            //Contract Type Code

            //Category

            //Status

            //Bind and add row
            CustConGrid.PageIndexChanging += new GridViewPageEventHandler(CustConGrid_PageIndexChanging);
            Controls.Add(CustConGrid);
            CustConGrid.DataBind();
        //UpdatePanel1.PageIndexChanging += new    GridViewPageEventHandler(CustConGrid_PageIndexChanging);
//Tried something by myself, but is not working
UpdatePanel1.ContentTemplateContainer.Controls.Add(CustConGrid);
            }
        }

        protected override void RenderContents(HtmlTextWriter writer) {}

        public DataTable TableFromReader(IDataReader dr) {}

        void CustConGrid_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            CustConGrid.PageIndex = e.NewPageIndex;
            CustConGrid.DataBind();
        }

        private void GetSessionInfo() {}
    }
}

通过在页面标记中添加此MaintainScrollPositionOnPostback,可以解决回发后保持滚动位置的问题

<%@ Page Title="" MaintainScrollPositionOnPostback="true"  Language="C#" 

好的,我刚刚测试过,它对我们有效。我补充说: maintaintScrollPositionOnPostBack=true

指向web.config中的页面标记


但是,要进一步了解ASP.NET,是否也可以在代码中使用updatepanel?例如,在方法page_onload{}

中,当我在“MaintainScrollPositionOnPostback”上搜索时,我还发现一些线程可以将其放入页面加载中,如下所示:代码保护子页面加载ByVal sender作为对象,ByVal e As System.EventArgs处理Me.LoadPage.MaintaintScrollPositionOnPostback=True End Sub但这似乎更像是vb.net而不是c?我还了解到,可以将其添加到web.config:。下周我会试试这个。