The following example demonstrates how to manually implement complex hyperlink behavior by handling the HyperlinkClick event.
In this example, this event handler is used to invoke a form with the data list. The end-user can select the item from the pop-up list and it automatically replaces the hyperlink content.
How to: Handle the Hyperlink Click Event
How to implement a data service that supports remote operations for dxDataGrid
This example demonstrates how to implement a data service based on ASP.NET WebAPI that supports remote operations for the dxDataGrid widget. The main idea is to get all parameters passed from the client side and use them when loading data from a data base to prepare data in the required manner. We performed the following steps to implement data loading:
1. Include the DevExtreme.AspNet.Data library into our project. You can do this using the NuGet package manager.
2. Get parameters from the GET request using a custom binder - see the WebApiDataSourceLoadOptionsBinder class.
3. Pass these parameters with the required DbContext to the DataSourceLoader.Load method.
In addition, please refer to the Use Custom Store - Remote Operations help topic to learn more about all supported remote operations of dxDataGrid. You can see an implementation of a custom store for dxDataGrid in the dxDataGrid - How to implement a custom store with CRUD operations example.
See also:
How to implement the Rest service based on an ASP.NET WebAPI application
Question Comments
Added By: Matthias Klein at: 2/8/2017 9:02:28 AM Is there an example for ASP.NET Core?Added By: Nikolai (DevExpress Support) at: 2/8/2017 9:31:31 AM Hi Matthias,
We do not have exactly the same example for ASP.NET Core. However, you can use the same approach.
By the way, you can find ASP.NET Core demos on your local machine if you install DevExtreme in the "C:\Users\Public\Documents\DevExpress Demos\DevExtreme\ASP.NET MVC Wrappers (RC)\ASP.NET Core" folder.
Web Dashboard - How to apply filtering to a dashboard item's data in OLAP mode
The following example demonstrates how to apply filtering to a dashboard item's data in OLAP mode.
In this example, constant values and dashboard parameters are passed to a filter string to filter a dashboard item's data.
How to convert an XtraGrid to an XtraReport at runtime
This example demonstrates how to dynamically create a report based upon the GridControl at runtime. This means that all filtering and sorting conditions selected in the grid are also applied in a report. To accomplish this task, it is necessary to create a report with all the necessary bands, bind it to a data source and adjust all the necessary options.
Question Comments
Added By: comanda mohamed at: 2/9/2017 3:32:56 AM sort column and border style does not working
How to define a custom Filter Popup allowing to add custom toolbar buttons and a filter editor
To accomplish this task, define a custom PivotGridField.HeaderTemplate. In the attached solution, this template is defined in the MainWindow.xaml file. The custom functionality is implemented in the ComboBoxEdit descendant. This descendant is defined in the CustomFilterPopup.cs file. Filter popup is populated from the PivotGridRadioFilter_PopupOpening event handler. To apply the filter, the PivotGridRadioFilter_PopupClosed event handler is used.
The custom filter edit provides custom functionality using the Invert button and the TextEditor filter.
How to control the master row expansion from the view model in the Master-Detail grid
This example illustrates how to add MVVM capabilities to the Master-Detail functionality. In this example we have created the MasterDetailMVVMHelper class that introduces the ExpandedMasterRowsSource attached property. This property is intended to be attached to GridControl and allows controlling details' expanded state via a collection in a view model.
Here is a sample XAML that illustrates how to attach this property to GridControl and make it bound to the ExpandedItems collection:
[XAML]<dxg:GridControlmy:MasterDetailMVVMHelper.ExpandedMasterRowsSource="{Binding ExpandedItems}"Name="gridControl1"ItemsSource="{Binding Data}">
Now, by adding a couple of data objects to the ExpandedItems collection, you can expand corresponding rows in GridControl:
[C#]ExpandedItems.Add(Data[1]);ExpandedItems.Add(Data[10]);
[VB.NET]ExpandedItems.Add(Data(1)) ExpandedItems.Add(Data(10))
An important note: The collection being bound to the ExpandedMasterRowsSource must be an implementation of the INotifyCollectionChanged interface, otherwise this functionality will not operate as expected.
Question Comments
Added By: Ipek Guven at: 6/26/2012 11:52:42 PM
This solution is not working with the latest native Master-Detail feature in Vol 12.1. Can you upgrade the solution or provide a new one for the latest release?
Thanks in advance.
Ipek
Ipek, you might want to reference the Grid.Extensions dll as well.
http://www.devexpress.com/Support/Center/p/Q383850.aspx
Is there any same example for winforms
thanks Neeraj
Hello Neeraj,
I have extracted your question to a separate ticket - How to obtain expanded rows when the Master-Detail functionality is used - and passed it to our WinForms team. That ticket is in our processing queue, and we will update it once we have any news.
How to filter resources in the ASPxScheduler control using the ASPxTreeList component
At present, the ASPxScheduler control does not support the "resources tree" concept (this functionality is currently available only for our WinForms SchedulerControl).
To emulate a "hierarchical resources" scenario, we suggested filtering child resources based on a parent resource using the ASPxComboBox control.
However, when there are several levels of resource hierarchies, you have to add an ASPxComboBox instance for each of the levels and implement filtering the "child" comboboxes items based on the "parent" combobox selected value.
This example demonstrates a simpler approach to emulate the "hierarchical resources" scenario by filtering ASPxScheduler resources using the ASPxTreeList control.
How to replace the default Filter Popup with a custom one made with ASPxGridView control
This example demonstrates how to replace the default Filter Popup with a custom one made with the ASPxGridView control. This solution demonstrates only a basic approach, and it is possible to customize it further to achieve a custom result. The whole sample functionality can be divided into three parts:
1. We use the ASPxPivotGrid.FieldValueTemplate property to assign a custom header template. You can use a simpler sample project demonstrating this approach in the Create Header or Field Value Templates and replicate existing look-and-feel example. Note that in this example we replace the default filter button with a custom one created dynamically.
2. To get information about the filter applied to a specific field, we use the PivotGridFieldBase.FilterValues and PivotGridFieldBase.GetUniqueValues properties. To pass filter information from the server to the client, we simply convert filter values to strings. This solution can be not enough in some situations. In this case, it might be necessary to update the code accordingly.
3. To populate ASPxGridView with data at runtime and apply the specified filter to the ASPxPivotGrid control, we use the ASPxClientPivotGrid.PerformCallback and ASPxClientGridView.PerformCallback methods. The client-side row selection functionality is provided by the ASPxGridView's built-in Selection feature.
To attach the custom filter popup to your ASPxPivotGrid control, add the FilterPopup to the page and specify the following properties:
1. The FilterPopup.PivotGridID property is used to specify the target pivot grid control.
2. The FilterPopup.ThemeName property should be used to specify the name of the Theme that is used in your application. If the Default theme is used, keep this property empty.
Question Comments
Added By: Nagamanickam Rajamanickam at: 1/29/2014 10:36:06 AM
Hello Team,
We have implemented a CustomFilterPopup using this sample, but how to set this Custom Filter Popup only for one item and leave the others as default Pivot Grid Filter Popups?
Thanks
Naga
Hi,
I am trying to implement this approach, but Paging is not working. could you please let me know how paging will work here.
Added By: Constant (DevExpress Support) at: 5/8/2014 5:37:55 AMI have updated the sample project to fix the issue. The online version will be available soon. For now, you can download a temporary solution from the attachment. Please test this version and let me know of your results.
Added By: Brunweb at: 12/17/2014 7:36:46 AMHi,
i believe this example is missing some file : FilterPopup.ascx
The "FilterPopup.ascx.cs" references "ASPxGridView1" : where is it defined ? i believe in the missing file.
Please provide a full example.
thanks
Sorry, i did not know about example runner. Found now
Added By: Brunweb at: 12/17/2014 9:07:18 AMHi,
Example is really slow comared to standard filter popup, mostly because of the long time rendering in browser.
I tried from olap datasource, with about 4000 items in the list (no hierarchy) : less than 2 seconds with standard filter popup, almost 10 seconds with the example... just to load the list... maybe because of the gridview not being able to show native checkboxes.
Why isn't it possible just to be able to have some search field in the standard filter popup ?
Your example uses access DB with very fiew lines : it is OK, but in real life scenario:
- users have lots of lines
- they don't want paging (worst than all)
- they do not want to scroll a 4000 item list
I unerstant the logic would be not simple for hierarchies, but for simple items, adding a search box (with incremental search) should be possible.
Please provide an example where we can REALLY replicate existing look and feel : here, it looks same, but feeling is totally diferent, because really slow.
Thanks
Added By: Constant (DevExpress Support) at: 12/18/2014 3:27:45 AMI am afraid we do not have an example demonstrating how to provide this functionality for a simple CheckedListBox control. You can use the same approach to replace the standard list with any control which better meets your needs. In my opinion, it can be a good choice to use the HTML5-Java Script Data Grid Widget instead. However, I should note that this control is included in the DevExtreme subscription.
Added By: Nicholas Lordi at: 12/29/2014 1:44:19 PMHello we implemented this on IE and it works fine, but most of our clients are starting to use Chrome. When we ran the same page in Chrome and the field dropdown buttons didn't appear so the user couldn't bring up the pop up filter. Is this a browser setting perhaps?
Added By: Constant (DevExpress Support) at: 12/29/2014 11:22:28 PMI have tested this functionality on my side but have not noticed any issues. Please make sure that the correct Theme name is specified in the template. In the example we get a theme name (Aqua) from PivotGridControl. If you apply a theme to an entire page, it might be necessary to specify the theme name manually.
Added By: Pet Ve at: 8/11/2016 7:22:25 AM There is a syntax error in FilterPopup.ascx.cs at the line 92. Themust use single quotes because it is double quoted as the ClientSideEvents Click attribute.[JavaScript]gvFilterItems.GetSelectedFieldValues("FilterValue", ApplyFilter);
Added By: Constant (DevExpress Support) at: 8/12/2016 1:37:53 AM
Thank you for your report. This is not an error. It is possible to use both double and single quotation marks in JavaScript. This event handler was defined using the Control Designer.... Double quotation marks are serialized in the following way:
<dx:ASPxButton ID="buttonFilterOk" runat="server" AutoPostBack="False" EnableClientSideAPI="True" Text="Ok"><ClientSideEvents Click="function(s, e) {
gvFilterItems.GetSelectedFieldValues("FilterValue", ApplyFilter);
ClosePopupWindow();
}" />Added By: Peter Bosch 1 at: 11/3/2016 5:11:26 AM Hi, I found a issue with this example:
The field list doesn't work anymore, it shows no name and the button to drop down instead.
Is this example still relevant or is there a newer example?
Added By: John (DevExpress Support) at: 11/3/2016 5:27:15 AM Hi Peter,
I have not managed to reproduce this issue when I run the demo online. Does this issue appear in your project or it can be reproduced with this demo online?Added By: Peter Bosch 1 at: 11/3/2016 5:35:44 AM Its the online demo, i cant seem to attach a picture in this comment so steps to reproduce it:
- goto: https://codecentral.devexpress.com/E4669/
- Richtclick "Products" field and press "Show Field List" in the context menu
- Remove some fields to fill up the popup
Added By: John (DevExpress Support) at: 11/3/2016 5:53:04 AM Thank you for the clarification. I have reproduced this issue. Give us some additional time to fix this issue.Added By: Constant (DevExpress Support) at: 11/7/2016 2:14:50 AM I have uploaded the new example version 16.1. This example contains these changes:
1. The field's caption is correctly displayed in the field list.
2. A custom filter button is correctly aligned.
3. The server-side data processing logic is updated to speed up the processing of large item collections.
Please test the updated example version and let us know your results.Added By: Peter Bosch 1 at: 11/7/2016 5:42:17 AM I am still on version 15.2, I'll have to upgrade first. as the example doesn't work in this version.
The online example works great though.
Added By: Constant (DevExpress Support) at: 11/8/2016 12:47:25 AM I have updated the solution and now it works with version 15.2. Feel free to contact us if you need additional assistance regarding this functionality implementation. Added By: Peter Bosch 1 at: 11/10/2016 12:33:25 AM It works fine haha another question... :))), is it possible that this could work with the customizationform excel2007 style.
Right now same error in this popup.
Added By: Constant (DevExpress Support) at: 11/10/2016 1:29:47 AM Would you please clarify whether you are using the Filtering functionality in the Excel2007 style customization form (e.g. AllowFilterInCustomizationForm option)?
How to enable in-place editing in the ASP.NET tree List View (ASPxTreeListEditor)
This is a temporary solution for the Tree List Editors - How to edit data directly in the tree view (inplace / inline modifications) scenario.
See also:
How to enable in-place editing in the WinForms tree List View (TreeListEditor)
Question Comments
Added By: HEUNGGI LEE at: 1/29/2014 6:05:14 PM
I got this error message below
"An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode."
I solved with adding below line to web.config
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
I have updated the example's configuration file, thanks.
How to align summary values displayed in a group row to the corresponding columns
This is an example for the A1041 Knowledge Base article. Please refer to the article for the explanation. This example was updated to prevent overlapping of a summary text with the group row text when the first column width is reduced.
See also: How to print group summary values under corresponding columns.
Question Comments
Added By: Ken Yanovsky at: 6/5/2013 1:55:59 PM
In this example using item.GetDisplayText(values[item], false) from the GridGroupSummaryItem is brutally slow as internally it's doing a try/catch.
Unless that's fixed, it's a lot quicker to use the column's editor GetDisplayText method like so
view.Columns[item.FieldName].RealColumnEdit.GetDisplayText(values[item])
I used this example to set my summaries as well as to allowing me to paint the background color of specific grouped rows that were set in the gridView1_CustomDrawGroupRow event (I set the e.Appearance.BackColor which was then painted on with the Painter object). However I was not able to match the color of the row to the indent on the group level.
Is there anyway to do this?
Added By: Tony Tam 1 at: 9/12/2013 6:24:05 AMAlso these changes dont print out
Added By: Vivek Upadhyay 3 at: 2/12/2017 11:06:26 PM Hi Team,I am facing the following issue be following this approach:
Grid Control - If second column width is reduced, then it shows blank numbers
Currently I am facing following difficulty à there is a tradeoff between “allowing the Text to trim” and at the same time also “allow horizontal scrolling in case of Frozen Columns without having the text to overlap”
Fixing the former causes issue in the latter.
Please find below the code which is called when we reduce the Column Width (of say, second column or any column which is adjacent to a frozen column)
Pb3GridControl.cs à method CalcSummaryRect():
// This specifies the Column Rectangle whose width is being reduced
Rectangle result = GetColumnBounds(column);
SizeF sz = DevExpress.Utils.Text.TextUtils.GetStringSize(e.Graphics, text, e.Appearance.Font);
// This specifies the Width of the “Text” in the Above Column Rectangle
int width = Convert.ToInt32(sz.Width) + 1;
if (!gridInfo.ViewRects.FixedLeft.IsEmpty)
{
// This specifies the “TOTAL Width of the FROZEN Columns” , e.g. if only the 1st column say “totalcol” is Frozen, the fixedLeftRight specified the width of this column,
But if say more columns are Frozen, then fixedLeftRight will be summation of the widths of all the frozen columns
int fixedLeftRight = gridInfo.ViewRects.FixedLeft.Right;
//Here below signifies Column Rectangle’s Right – Width of Text – Total Width of Frozen Columns (i.e. Right for the FixedLeft Columns)
int marginLeft = result.Right - width - fixedLeftRight;
if (marginLeft < 0 && column.Fixed == FixedStyle.None)
return Rectangle.Empty;
}
Issue : The above "if condition" causes the Text NOT to Trim in case the Column Width is reduced. Instead an empty Rectangle is return.
If we comment out the "if condition", then Text Trimming will work fine, but if we have frozen columns and we do a horizontal scroll, in that case there will be text overlapping
How to change BarItemLink's appearance via templates
This example demonstrates how to change a BarItemLink's appearance by customizing templates (available via the CustomResources property)
To learn more on how to implement similar functionality in Silverlight, refer to the T246660 example.
See also: T361488 - How to find and change an inner DevExpress control template.
How to bind ASPxGridView to data when clicking an external button
This example illustrates how to bind ASPxGridView to data when clicking an external button.
Note that if the grid is already bound to another datasource, it is necessary to set the grid's EnableViewState property to False.
Also, clear the grid's columns and set the AutoGenerateColumns property to True before calling the DataBind method.
Question Comments
Added By: Yan Xiaohua at: 9/29/2015 11:30:16 PM
What shall we do if the source table structure may change ? e.g: click button1 return product list, but click button2, return customer list?
Added By: Jenny (DevExpress Support) at: 9/30/2015 12:45:24 AMHello Yan,
To process your recent post more efficiently, I created a separate ticket on your behalf: T295150: ASPxGridView - How to implement the approach from E4427 example if datasource can be changed. This ticket is currently in our processing queue. Our team will address it as soon as we have any updates.
This may not be the right place to ask my question, but still I am also trying to perform same operations. On click of button I am binding the data from databale to Gridview. I have enabled the sorting using
[ASPx]<SettingsBehaviorAllowSort="true"SortMode="DisplayText"/>
When I click on column header, it sots but nothing is displayed on gridview. Only on click of button it display the sorted data. From this thread I learnt that, on gridview databinding event we have to bind the grid view once again like shown below.
Is my understanding correct? Is this is the only way to rebind the gridview or any better way do you suggest. Thanks.[C#]protectedvoidASPxGridView1_DataBinding(objectsender,EventArgse){grid.DataSource=(DataTable)ViewState["testdata"];}
Hybrid App (EF data model only)
Question Comments
Added By: Natasja Patry at: 2/14/2017 2:28:14 AM The example does not open, I have installed Example Runner and I get the error "ZipException: Cannot find central directory"
How to implement a capability to cancel current row modifications at the GridView level
WinForms binding provides a capability to discard modifications made in a current item. As it is stated in the MSDN, this feature is supported only if objects contained by the datasource implement the IEditableObject interface: CurrencyManager.CancelCurrentEdit Method.
Entity Framework 4 comes with POCO support allowing developers to define entities without requiring base classes. However, giving up inheriting from framework base entities developers lost built-in implementations of interfaces required in WinForms binding: IEditableObject and INotifyPropertyChanged. The lack of these interfaces implementation in entities causes loosing a corresponding functionality in data aware controls. For instance, the capability to cancel changes in GridView after validation failes.
There are many workarounds for this problem. This example demonstrates how to address the issue at the GridControl level without affecting other code. In this example, we create a GridView descendant according to recommendations provided in the How to create a GridView descendant class and register it for design-time use Knowledge Base article. The extended GridView uses the new data controller inherited from the CurrencyDataController and extended with a new feature by overriding several methods: BeginCurrentRowEdit, EndCurrentRowEdit, and CancelCurrentRowEdit.
Question Comments
Added By: Dean J. at: 3/6/2014 7:55:17 PM
Does this also work when the user is working on a NEW row, and then presses the ESC key?
Added By: Petrovic Ivan at: 2/14/2017 8:13:47 AM How can I save CanCancelChanges in layout (
SaveLayoutToStream ) of said view ?
GridView - How to use Callback Mode for the ComboBox column
UPDATED:
Starting with version v2016 vol 1 (v16.1), a built-in combo box editor can operate in callback mode. You can find detailed steps by clicking the "Show Implementation Details" link below.
For earlier versions:
At this moment, GridView does not support Callback Mode for the built-in combobox editor in ComboBoxDataColumn: GridView - Support callback mode for the built-in editor of the MVCxGridViewColumnType.ComboBox column. However, in some scenarios it is required to use ComboBoxDataColumn in Callback Mode, for instance, when the ComboBox' data source is too large. In this case it is necessary to use templates. This example demonstrates how to implement Callback Mode ComboBox in Edit Form and in Auto Filter Row of the GridView.
See also:
Using Callbacks
Question Comments
Added By: Pascal Nançoz at: 2/15/2017 12:46:09 AM Hi,
I'd like to use the exact same scenario in a FormLayout instead of a GridView. In this sample, the HomeController contains the CountryComboBox() which returns GridViewExtension.GetComboBoxCallbackResult(p); to return the content of the ComboBox back to the client. What is the equivalent for a FormLayout Extension ? exemple of usage below:
@Html.DevExpress().FormLayout(settings =>
{
settings.Items.Add(model => model.Field,
layoutItem =>
{
layoutItem.NestedExtension().ComboBox(s =>
{
s.Properties.ValueField = "MyValueField";
s.Properties.TextField = "MyTextField";
s.CallbackRouteValues = new
{
Controller = "MyController",
Action = "MyAction"
};
});
});
}).GetHtml()
Added By: Alexandre Blecich at: 2/15/2017 1:12:33 AM I would like to have the same behaviour as defined by Pascal.
It could be cool if you implement that.
Thanks to consider my request!
Best regards!
Alex
RichEdit - How to save and load documents from a database
Load document:
- Pass a model with a binary property (rich text content to be displayed) to the RichEdit's PartialView.
- Use the RichEditExtension.Open method to open a new document with the specified/unique document ID and the necessary rich content type, and retrieve the binary content from the passed model (see the RichEditPartial source code file):
[C#]@Html.DevExpress().RichEdit(settings=>{settings.Name="RichEditNameHere";settings.CallbackRouteValues=new{Controller=...,Action="ActionMethodThatHandlesRichEditCallbacks"};}).Open(UNIQUE_DOCUMENT_ID_HERE,RICH_TEXT_FORMAT_HERE,()=>{returnMODEL_BINARY_PROPERTY_HERE;}).GetHtml()
[VB.NET]@Html.DevExpress().RichEdit( _Sub(settings) settings.Name = "RichEditNameHere" settings.CallbackRouteValues = NewWith {.Controller = "...", .Action = "ActionMethodThatHandlesRichEditCallbacks"}EndSub).Open(UNIQUE_DOCUMENT_ID_HERE, RICH_TEXT_FORMAT_HERE, _Function()Return MODEL_BINARY_PROPERTY_HEREEndFunction).GetHtml()
Save a document:
- Click the built-in toolbar's Save button/item.
- Use the RichEditSettings.Saving property to handle the DocumentManager.AutoSaving event.
- Retrieve the modified content via the RichEditExtension.SaveCopy method, save it to the related bound model's binary property, and set the EventArgs Handled property to True (see the HomeController source code file):
[C#]settings.Saving=(s,e)=>{byte[]docBytes=RichEditExtension.SaveCopy("RichEditName",DevExpress.XtraRichEdit.DocumentFormat.Rtf);DXWebApplication1.Models.DataHelper.SaveDocument(docBytes);e.Handled=true;};
[VB.NET]settings.Saving = Sub(s, e)Dim docBytes AsByte() = RichEditExtension.SaveCopy("RichEditName", DevExpress.XtraRichEdit.DocumentFormat.Rtf) DXWebApplication1.Models.DataHelper.SaveDocument(docBytes) e.Handled = TrueEndSub
See Also:
WebForms Version:
T352034: ASPxRichEdit - How to save and load documents from a database
ASPxGridView - Batch Editing - Simple implementation of DataItemTemplate
This example demonstrates how to create a custom editor inside a column's DataItemTemplate when ASPxGridView is in Batch Edit mode.
ASPxGridView - How to set a different color for the modified cell in different columns in Batch Edit mode
Question Comments
Added By: Yahya Ali at: 4/29/2014 7:52:33 AM
impressive! but needs some documentations to get the full idea.
Added By: Larry (DevExpress Support) at: 4/30/2014 3:55:26 AM Hello,I have created a separate ticket on your behalf to process your inquiry more effectively:
Documentation for the E5140 example
Please refer to it for further correspondence.
How to save dashboards created in ASPxDashboard to a DataSet
The following example shows how to create a custom dashboard storage for ASPxDashboard by implementing the IEditableDashboardStorage interface. In this example, a DataSet is used as an in-memory storage of dashboards. This DataSet can be used later to save dashboards in the database using DataAdapter.
See also: ASPxDashboard - How to save dashboards to a data base
Question Comments
Added By: Thanakorn Saeliange at: 8/22/2016 10:29:53 AM I can't find the reference of DashboardStorageDataSet.Added By: John (DevExpress Support) at: 8/23/2016 4:22:21 AM Hi Thanakorn,
We have fixed this issue. Download the example again and let me know whether or not it operates correctly on your side. Added By: Thanakorn Saeliange at: 8/23/2016 8:34:20 AM Thank you for your help. I'am a newbie. Could you please tell me about the way to run the example file. Added By: Sergi (DevExpress Support) at: 8/23/2016 10:03:28 AM Download the Example Runner tool by clicking the corresponding link in the Downloads section on the right side of the window. After installing the tool, click the "Example" link to download and run the example locally.Added By: Fabio Andrade at: 2/15/2017 7:32:06 PM Hi
after set ASPxDashboard1.SetDashboardStorage(dashboardStorage)
do i need to use this function ?
dashboardStorage.AddDashboard ?
right ?
but i dont know how can i call this function to add this parameter: dashboard As XDocument
thanks my friends
How to provide drill-through functionality to web reports
To do this, implement the IWebDocumentViewerDrillThroughProcessor interface. In its CreateReport method, pass a DrillThroughContext instance and use its CustomData property to specify the navigation logic.
In this example, the CustomData value is compared against the NavigateUrl property values of report elements acting as links to open other reports.
To register a custom drill-through processor, call the RegisterWebDocumentViewerDrillThroughProcessor method of the DefaultWebDocumentViewerContainer class at the application startup.
Handle the Init event of the Document Viewer and subscribe to the client-side customProcessBrickClick event to process mouse events related to report elements.