처음에는 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() {}
}
}
'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