Добрый день!
Необходимо работать с данными напрямую из кода.
Но AxDataSource возвращает данные по страницам, т.е. по умолчанию по 10 записей.
Свойство dataSetView.Count возвращает 10. Хотя записей 13. Функция dataSetView.GetTotalNumberOfRows() возвращает при этом 13. Если добавить AxGridView, то на первой странице отображается 10 записей, на второй странице 3.
Метод dataSet.DataSetViews[0].SetPagingParameters(new PagingParameters(false, 0, 0));
не срабатывает...
Код:
using System;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Dynamics.Framework.Portal.UI.WebControls;
using Microsoft.Dynamics.Framework.Portal.UI.WebControls.WebParts;
using Microsoft.Dynamics.Framework.Portal.UI;
using Microsoft.Dynamics.Framework.BusinessConnector.Session;
using Microsoft.Dynamics.Framework.Data.Ax;
using Microsoft.Dynamics.Framework.BusinessConnector.Adapter;
public partial class ObjectMap : System.Web.UI.UserControl
{
/// <summary>
/// Returns the current webpart session
/// </summary>
ISession AxSession
{
get
{
AxBaseWebPart webpart = AxBaseWebPart.GetWebpart(this);
return webpart == null ? null : webpart.Session;
}
}
/// <summary>
/// Returns the current webpart
/// </summary>
private AxBaseWebPart WebPart
{
get
{
return AxBaseWebPart.GetWebpart(this);
}
}
private void BuildObjectMap()
{
DataSet dataSet = this.AxDataSource1.GetDataSet();
dataSet.DataSetViews["Apartment"].SetPagingParameters(new PagingParameters(false, 0, 0));
DataSetView dataSetView = dataSet.DataSetViews["Apartment"];
#region Print error message
IAxaptaRecordAdapter currentRecord = this.WebPart.ExternalRecord;
if (currentRecord == null)
{
TableRow _row1 = new TableRow();
TableCell _cell1 = new TableCell();
_cell1.Text = "External Record is null.";
_row1.Cells.Add(_cell1);
ObjectMap.Rows.Add(_row1);
return;
}
#endregion
string lastEntrance = "";
string lastFloor = "";
TableRow _row = new TableRow();
foreach (DataSetViewRow dataSetViewRow in dataSetView)
{
if (lastFloor != dataSetViewRow.GetFieldValue("FloorNum").ToString())
{
_row = new TableRow();
ObjectMap.Rows.Add(_row);
}
TableCell _cell = new TableCell();
_cell.Text = dataSetViewRow.GetFieldValue("ApartmentNum").ToString();
_row.Cells.Add(_cell);
lastFloor = dataSetViewRow.GetFieldValue("FloorNum").ToString();
lastEntrance = dataSetViewRow.GetFieldValue("EntranceNum").ToString();
}
}
protected void Page_Load(object sender, EventArgs e)
{
this.BuildObjectMap();
}
}
Если обращаться к данным напрямую, не через AxDataSource
Код:
DataSet dataSet = new DataSet(this.AxSession, "Apartment");
dataSet.DataSetViews["Apartment"].SetPagingParameters(new PagingParameters(false, 0, 0));
dataSet.Run();
то возващаются все записи, что не желательно, т.к. в случае обращения через AxDataSource, возвращаются только те записи, которые соответствуют внешнему контексту, т.к. переход на данную страницу происходит из родительской страницы.