【问题标题】:put gridview on a updatepanel将gridview放在更新面板上
【发布时间】:2014-06-06 09:12:16
【问题描述】:

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

我正在开发应用程序/框架 oracle 实用程序。过去,我在经典的 ASP 中创建了“剪辑”,它们是网格视图。网页上有几个剪辑。所有这些网格视图都具有页面索引。此时每个网格显示 5 条记录。因此,如果有 18 条记录,则有 4 页。

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

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

如果我在找,我不知道我说的对不对,将一个剪辑的每个gridview绑定到他自己的更新面板,这样如果用户点击某个gridview的下一页,只有该 gridview 已刷新,而不是完整页面(AJAX?)。

代码如下:

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() {}
    }
}

【问题讨论】:

    标签: asp.net gridview updatepanel


    【解决方案1】:

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

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

    【讨论】:

    • 当我在 'MaintainScrollPositionOnPostback' 上搜索时,我还发现一些线程可以将其放入 Page_Load 中,如下所示:code Protected Sub Page_Load(ByVal sender As Object, ByVal e As System. EventArgs) 处理 Me.LoadPage.MaintainScrollPositionOnPostBack = True End Sub 但这似乎更像是 vb.net 而不是 c#?我还读到可以将其添加到 web.config:。下周我会试试这个。
    【解决方案2】:

    好的,我刚刚对其进行了测试,它对我们有用。我已经添加了: 维护ScrollPositionOnPostback="true"

    到 web.config 中的页面标签。

    但是要了解更多 ASP.NET,是否也可以在后面的代码中使用更新面板? (例如在方法 page_onload{} 中)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多