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