13.05.2010, 15:43 | #1 |
Участник
|
Enterprise Portal (EP) фильтрация записей в grid'e
Добрый день,
В VS2008 было сделано 3 Dynamics Ax user Control. Задача чтобы первый грид фильтровал записи из второго, а второй фильтровал из третьего. Так как через connections в один момент времени, web part может быть либо provider либо consumer, второй грид не может фильтровать записи в 3 потому что он consumer от первого грида. Я сделал 2 web parts в первом, первый грид - provider , во вотором web parts - два грида . В ЕР странице они распологаются в 2 Dynamic user control web part. Идея такая что при выборе записи во вотором гриде, вызывается метод в ДатаСете в аксапте, который фильтрует записи в 3 гриде. Код: protected void AxGridView1_SelectedIndexChanged(object sender, EventArgs e) { Int64 recId; DataSetViewRow curRow = this.DataSourceName.GetDataSourceView(this.AxGridView1.DataMember).DataSetView.GetCurrent(); recId = (Int64) curRow.GetFieldValue("RecId"); this.DataSourceName.GetDataSet().DataSetRun.AxaptaObjectAdapter.Call("axDataSetMethodName", recId); } Код для метода для считывания текущей строки взял из http://msdn.microsoft.com/en-us/dyna.../dd891008.aspx SelectedIndexChanged событие срабатывет когда выбрана новая строка в гриде. Dynamics Ax 2009, VS2008 |
|
19.05.2010, 09:48 | #2 |
Участник
|
Попробуйте посмотреть здесь:
Filtering a DataSet from Code behind |
|
24.05.2010, 17:56 | #3 |
Участник
|
Сделал через метод в DataSete, который описал выше.
Проблема похоже была в том что в одном UsetControl'е было два Axdatasourc'а с параметром Role = ProviderConsumer. Это дефолтная установка. Как только поменял у одного на None - заработало. Забыл сказать, чтобы при загрузке страницы третий грид сразу фильтровался надо добавитй код из первого поста в эвент DataBound, во втором гриде. AXDataSourceControl Make sure only one AXDataSourceControl has Role property set to Provider ( or ProviderConsumer) in your user control. If the user control contains other user control then across all these , only one datasourcecontrol should play the provider role. Из Ax2009EPDevcookbook Попробуйте посмотреть здесь: Filtering a DataSet from Code behind Спасибо за ссылку, к сожалению у меня не неполучилось сделать как там описано. Добавил фильтр по RecId, но грид все равно не фильтруется, показывает все записи. Последний раз редактировалось rDenis2; 24.05.2010 в 18:00. |
|
|
|