2014-06-06 3 views
0

처음에는 ASP.NET의 초보자입니다. 나는 고전적인 ASP를 많이 알고있다.updatepanel에 gridview 넣기

저는 응용 프로그램/프레임 워크 oracle 유틸리티에서 작업하고 있습니다. 과거에는 그리드 뷰인 기존 ASP에서 '클립'을 만들었습니다. 웹 페이지에 몇 개의 클립이 있습니다. 이러한 모든 gridview에는 페이지 색인이 있습니다. 이 순간에 그리드마다 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() {} 
    } 
} 

답변

0

당신은 페이지 태그에이 MaintainScrollPositionOnPostback을 추가하여 다시 게시 후 스크롤 위치를 유지하는 문제를 해결할 수 있습니다 : 여기

는 코드입니다.

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

'MaintainScrollPositionOnPostback'에 google을 사용하면 다음과 같이 Page_Load에 넣을 수있는 스레드도 발견됩니다.'code' Protected Sub Page_Load (ByVal sender As Object, ByVal e As System.EventArgs) 처리 Me.LoadPage.MaintainScrollPositionOnPostBack = True End Sub하지만이 대신 C# 아닌 vb.net 보인다 또는 아닙니다? 또한이 내용을 web.config : 에 추가 할 수도 있습니다. 다음 주에 나는 이것을 시도 할 것이다. – user2363969

0

좋아, 나는 그것을 시험해 보았고 그것은 우리를 위해 일하고있다. 내가 추가했습니다 : MaintainScrollPositionOnPostback = "true"

web.config의 페이지 태그에.

ASP.NET을 조금 더 배우려면 코드 뒤에있는 updatepanel을 사용하는 것이 가능합니까? (예 : 메서드 page_onload {})