object dataSource;
bool initialized;
+ bool preRendered;
bool requiresDataBinding;
protected BaseDataBoundControl ()
protected bool RequiresDataBinding {
get { return requiresDataBinding; }
- set { requiresDataBinding = value; }
+ set {
+ requiresDataBinding = value;
+ if (value && preRendered && IsBoundUsingDataSourceID && Page != null && !Page.IsCallback)
+ EnsureDataBound ();
+ }
}
protected void ConfirmInitState ()
protected internal override void OnPreRender (EventArgs e)
{
+ preRendered = true;
EnsureDataBound ();
base.OnPreRender (e);
}
[MonoTODO]
protected override void EnsureDataBound ()
{
- throw new NotImplementedException ();
+ base.EnsureDataBound ();
}
[MonoTODO]
protected override Style CreateControlStyle ()
{
- throw new NotImplementedException ();
+ return base.CreateControlStyle ();
}
protected override int CreateChildControls (IEnumerable data, bool dataBinding)
{
- PagedDataSource dataSource;
+ PagedDataSource dataSource = new PagedDataSource ();
+ dataSource.DataSource = data;
+ dataSource.AllowPaging = AllowPaging;
+ dataSource.PageSize = 1;
+ dataSource.CurrentPageIndex = PageIndex;
if (dataBinding) {
DataSourceView view = GetData ();
- dataSource = new PagedDataSource ();
- dataSource.DataSource = data;
-
- if (AllowPaging) {
- dataSource.AllowPaging = true;
- dataSource.PageSize = 1;
- dataSource.CurrentPageIndex = PageIndex;
- if (view.CanPage) {
- dataSource.AllowServerPaging = true;
- if (view.CanRetrieveTotalRowCount)
- dataSource.VirtualCount = SelectArguments.TotalRowCount;
- else {
- dataSource.DataSourceView = view;
- dataSource.DataSourceSelectArguments = SelectArguments;
- dataSource.SetItemCountFromPageIndex (PageIndex + PagerSettings.PageButtonCount);
- }
+ if (view.CanPage) {
+ dataSource.AllowServerPaging = true;
+ if (view.CanRetrieveTotalRowCount)
+ dataSource.VirtualCount = SelectArguments.TotalRowCount;
+ else {
+ dataSource.DataSourceView = view;
+ dataSource.DataSourceSelectArguments = SelectArguments;
+ dataSource.SetItemCountFromPageIndex (PageIndex + PagerSettings.PageButtonCount);
}
}
-
- pageCount = dataSource.PageCount;
- }
- else
- {
- dataSource = new PagedDataSource ();
- dataSource.DataSource = data;
- if (AllowPaging) {
- dataSource.AllowPaging = true;
- dataSource.PageSize = 1;
- dataSource.CurrentPageIndex = PageIndex;
- }
}
+ pageCount = dataSource.Count;
bool showPager = AllowPaging && (PageCount > 1);
- dataSourceCount = dataSource.Count;
Controls.Clear ();
table = CreateTable ();
// Gets the current data item
IEnumerator e = dataSource.GetEnumerator ();
- if (e.MoveNext ())
- dataItem = e.Current;
+ dataItem = null;
+
+ if (AllowPaging) {
+ if (e.MoveNext ())
+ dataItem = e.Current;
+ }
else
- dataItem = null;
+ for (int page = 0; e.MoveNext (); page++ )
+ if (page == PageIndex)
+ dataItem = e.Current;
// Main table creation
using NUnit.Framework;
using System;
using System.IO;
+using System.Collections;
using System.Globalization;
using System.Web;
using System.Web.UI;
public void LoadState (object state) {
LoadViewState (state);
}
+
+ public void DoConfirmInitState ()
+ {
+ base.ConfirmInitState ();
+ }
+
+ public void DoOnPreRender (EventArgs e)
+ {
+ base.OnPreRender (e);
+ }
}
[Test]
Assert.AreEqual (0, p.DataItemCount, "A38");
Assert.AreEqual (0, p.DataItemIndex, "A39");
}
+
+ [Test]
+ public void PageIndex ()
+ {
+ ObjectDataSource ds = new ObjectDataSource ();
+ ds.ID = "ObjectDataSource1";
+ ds.TypeName = "System.Guid";
+ ds.SelectMethod = "ToByteArray";
+ Page p = new Page ();
+ Poker f = new Poker ();
+ f.Page = p;
+ ds.Page = p;
+ p.Controls.Add (f);
+ p.Controls.Add (ds);
+ f.DataSourceID = "ObjectDataSource1";
+ f.DoConfirmInitState ();
+ f.DoOnPreRender (EventArgs.Empty);
+ object cur = f.DataItem;
+ f.PageIndex = 1;
+ Assert.IsTrue (cur != f.DataItem, "#01");
+ }
}
}
#endif