|
21.05.2010, 13:38 | #1 |
Участник
|
DAX2009 EP: Работа с данными в C#
Добрый день!
Необходимо работать с данными напрямую из кода. Но 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(); } } Код: DataSet dataSet = new DataSet(this.AxSession, "Apartment"); dataSet.DataSetViews["Apartment"].SetPagingParameters(new PagingParameters(false, 0, 0)); dataSet.Run(); |
|
21.05.2010, 13:41 | #2 |
Участник
|
при таком способе отключение параметров разбиения на страницы срабатывает, если установку производить до вызова dataSetRun();
|
|
27.05.2010, 12:59 | #3 |
Участник
|
Стараюсь все обработки данных выносить в АХ, в портале - только интерфейс, во избежание тьмы глюков. Но если надо, то, конечно, надо...
__________________
-- regards, Oleksandr |
|
28.05.2010, 09:10 | #4 |
Участник
|
Вся бизнес-логика остается в Аксапте, работаю через DataSet'ы. Необходимо было отобразить данные одной таблицы в виде нескольких, в разным цветом фона и текста в зависимости от этих данных + свои фильтры
|
|
Теги |
ax2009, dataset, enterprise portal |
|
|