AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
вопросик по возможности EP на DAX2009 slava09 DAX: Функционал 6 11.08.2011 21:38
DAX2009 EP: Работа с меню QuickLaunch из User Control'а LEXAR DAX: Программирование 1 02.06.2010 09:24
EP Dax2009: добавление параметров к URL WebMenuItem'а LEXAR DAX: Программирование 4 01.04.2010 10:01
Solutions Monkey: Integrating EP Web Parts to non-EP SharePoint sites Blog bot DAX Blogs 0 04.04.2009 03:19
Solutions Monkey: Deploying Ax 2009 SP1 EP Blog bot DAX Blogs 0 05.02.2009 07:08
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:47.