How to colorize pie charts using the PieSegmentArgumentToColorIndexProvider class
How to show multiple summary values under the same column
Deprecated. Use the GridColumn.SummaryCollection property instead.
This example demonstrates how to show multiple summary values under the same column
ASPxDocumentViewer - Ribbon - how to customize export formats list
How to draw a vertical caption in a column header
To learn how to draw a vertical column header caption in grid view as well as in Customization Form, you can refer to either of the following sources:
1. The Grid Tutorials demo (the Vertical Headers module)
By default, it is installed here:
C:\Users\Public\Documents\DevExpress Demos vX.Y\Components\WinForms\CS\GridTutorials\
2. Find a sample in the following thread:
GridView - How to implement vertical column headers
How to bind ASPxGridView with manually created columns to different data sources at runtime. The grid is created in design mode
This example shows how to select and bind ASPxGridView to a data source at runtime. The page contains ASPxGridView, ASPxRadioButtonList and three data sources (SqlDataSource). In design mode the grid doesn't have any column. You should add all columns manually by using an appropriate algorithm. We have created columns as this is done in selected data columns. If a data source has insert, update or delete command, a command column will be appended to the grid.
Grid's data source is changed by clicking list items. Note that the EnableViewState property is set to false. It is done to avoid exceptions on binding the grid to another data source.
See also:
How to dynamically switch the grid's data source and recreate columns at runtime
How to bind ASPxGridView with autogenerated columns to different data sources at runtime. The grid is created at design mode
How to bind ASPxGridView with autogenerated columns to different data sources at runtime. The grid is created in runtime mode
How to save the currently opened View as a new View Variant at runtime
This example provides a platform-agnostic module that allows your end-users to add View Variants dynamically. Refer to the Best practices of creating reusable XAF modules by example of a View Variants module extension blog post for more information.
IMPORTANT NOTES
1. Although this example contains only platform-agnostic code, it cannot be used in the same scenarios on the Web, because there are no layout customization available for XAF Web applications at this time.
So, you may want to create a Web version of this module with a descendant of the UserViewVariantsController class, and the overridden OnActicated method where the UserViewVariants Action will be disabled if View is DetailView.
2. Due to the application model generation specifics on the Web, model customizations performed by UserViewVariantsController will not be stored between user sessions by default. However, it should work the same way as in Windows Forms applications if you store your end-user model differences in the database or any other store: How to store users' model differences separately for each user in the database
3. Be aware of the following known behavior: E2813 - Incorrect View Variant is shown as selected after the second creation of a custom variant
Question Comments
Added By: Robert Fuchs at: 9/2/2013 1:36:24 PM
Modified today but still not for 13.1 !?
Why?
Robert, this example was already available for version 13.1 before today. Today was just a maintenance update without much changes.
Added By: Robert Fuchs at: 9/3/2013 10:12:12 AMThanks Dennis.
Interestingly the version combo didn't show 13.1 yesterday.
I downloaded it anyway and it worked in 13.1 after changing .Net FW type to 4.
Hello, This is a great solution, but after upgrading to 13.2 it does not compile, Do you have a version for 13.2?
Thanks
Richard
waiting upgrade for 13.2
Added By: Willem de Vries at: 1/8/2014 8:49:14 AMJust leaving a comment to be included in any update messages. Waiting for a remedy for this breaking change to be able to upgrade to 13.2 with many of my applications.
Added By: Tony Tadros at: 1/14/2014 9:52:19 AMi have a suggestion to support such functionality of of the box
Added By: Stefan Tschiharz at: 1/23/2014 12:38:29 AMCould the example be updated to 13.2.6?
Added By: Dennis (DevExpress Support) at: 1/23/2014 12:41:45 AMGuys, please refer to my answer in Q554368 (there you can find an updated version + a link to a hot fix build).
Added By: Kanapol W. at: 1/29/2014 7:58:02 AMRight now, I have upgrade to v2013 vol 2.5
I use the most update code in "v2013 vol 1.4- v2013 vol1.9" . It get the error.
Would you please update this example to work with the most update version?
@Kanapol: This example will be updated once the version 13.2.7 is out (in a week or so). In the meantime, please check out my previous comment for a solution. Thanks.
How to merge grid cells
The sample illustrates the way to merge grid cells based on a custom-defined rule. To enable cell merging, it's necessary to set the GridView.OptionsView.AllowCellMerge property to true. If you don't want to merge some columns, set the GridColumn.OptionsColumn.AllowMerge property to false. A merging rule is defined using the GridView.CellMerge event.
Question Comments
Added By: Leon Zeng at: 8/22/2014 12:59:32 AM
The handler gridView1_CellMerge is not needed. It has no affect but makes the grid very slow.
Added By: Demetrius (DevExpress Support) at: 8/22/2014 2:51:09 AMHello Leon,
The gridView1_CellMerge event in this example was handled for demonstration purposes and it works as basic merging. To increase the performance, you can remove the try-catch block from the gridView1_CellMerge event handler.
If you have other questions, please ask them in a separate ticket.
How to configure dxRangeSelector
How to implement excel style tree filtering in a filter popup.
This example demonstrates how to filter dates using a tree and select date ranges.
How to export an XtraReport document to DOC, DOCX and ODT file formats
While there is no built-in capability to export documents created by XtraReport to *.doc, *.docx or *.odt file formats, you can accomplish this task by means of the RichEditDocumentServer .
The attached sample illustrates how to add custom bar items to the File Export drop down menu and export a report to these file formats using the RichEditDocumentServer.
Question Comments
Added By: Craig la Buscagne 1 at: 2/22/2013 10:50:04 AM
Do you perchance have an example of this in VB.NET ?
Thanks
Added By: Anastasius at: 2/25/2013 5:42:00 AMIf i use the RichEditDocumentServer, i lose all PageHeaders. Because you export it als html (only "one" page header) and import it again.
If i export it as rtf, and import it in your RichEditDocumentServer i lose all formats and text "positions" (Formating).
Any idea how i can export and import the XtraReport an also the nessesary Page headers?
Added By: Amrit Singh 1 at: 10/21/2013 11:45:19 AMHi --
Is there an answer for Anastasius's question because I've just boarded the boat he is in. According to the logic you've mentioned below in your solution, You're first exporting the report to html and then saving it as doc or docx which generates the data correctly but I get only one table for all the sections in a report. I want different headers(tables) so I could later modify(add/delete columns and rows in separate tables in separate sections) them per my needs . That was the whole requirement behind needing a report export to doc and docx. Please suggest a solution and also please let me know when DevExpress is coming up with an integrated export to Doc and export to Docx features? In which release? Because that would eliminate lots of code in my application.
Thanks Much
Amrit Singh
Hello,
This works for ShowPreviewDialog but how the ShowRibbonPreview for RibbonControl in an MDI window?
Thank you for your help.
Added By: Anders Wang at: 8/22/2014 7:22:08 PMFor simple Report, It is ok. But the problem for report have many tables, after use this way the layout are not acceptable. We see many persons here posted this kind of request for many years. We all know that doc is MS private format. It is difficult to do that. But for docx, it is open standard and published by ms in 2006, they have open sdk. There're also many opensource ooxml library. Is it possible to implement docx first? Many other reporting tools,eg, fastreport,activereport,txcontrol,aspose,ssrs already have this functionality. Could you please take this into account? Thanks a lot for your great help.
How to keep a look and feel of Windows forms in sync
After opening a form in a new thread you may notice that it doesn't follow the Look and Feel settings of your main application form. The reason for this is that each thread possesses its own DefaultLookAndFeel instance, for it is marked with the ThreadStatic attribute in our code. Knowing this fact leads to the necessity of synchronizing DefaultLookAndFeel instances from different threads. This example demonstrates a possible solution of synchronizing Look and Feel settings in threaded forms.
Question Comments
Added By: Peter Boogaard at: 8/23/2014 1:44:59 PM
This is an interesting topic, which should probably be explained more thoroughly in the "normal" documentation. We converted our application to adopt the DevExpress skinning, but we have dozens of threads and hundreds of forms and messages. Some messages will just not show up in the correct skin, which is driving us crazy. They must have been generated from a non-UI thread. But in a large app it's not so easy to keep every thread synced on the look and feel.
If the DefaultLookAndFeel would have been static for the application rather than per thread this would have prevented so many headaches (for many users if I go through the many threads on this).
So my question is: Why? Why is the ThreadStatic attribute applied, what advantage does this give over all disadvantages that makes it worth it? You did not chose the same solution for the default font, then why for the default look and feel?
How to generate and assign a sequential number for a business object within a database transaction, while being a part of a successful saving process (XAF)
This version of the How to generate and assign a sequential number for a business object within a database transaction, while being a part of a successful saving process example is primarily intended for XAF applications, because all the required operations to generate sequences are managed within the base persistent class. However, this code can be used in a regular non-XAF application based on XPO, as well.
For more convenience, this solution is organized as a reusable module - GenerateUserFriendlyId.Module, which you may want to copy into your project 'as is' and then add it as required via the Module or Application designers. This module consists of several key parts:
1. Sequence, SequenceGenerator, and SequenceGeneratorInitializer - auxiliary classes that take the main part in generating user-friendly identifiers.
Take special note that the last two classes need to be initialized in the ModuleUpdater and ModuleBase descendants of your real project.
2. UserFriendlyIdPersistentObject - a base persistent class that subscribes to XPO's Session events and delegates calls to the core classes above.
3. IUserFriendlyIdDomainComponent - a base domain component that should be implemented by all domain components that require the described functionality. Take special note that such derived components must still use the BasePersistentObject as a base class during the registration, e.g.:
[C#]XafTypesInfo.Instance.RegisterEntity("Document",typeof(IDocument),typeof(BasePersistentObject));
4. Address, Contact, and IDocument are business objects that demonstrate the use of the described functionality for XPO and DC respectively.
Take special note that a required format for the user-friendly identifier property in these end classes is defined within an aliased property (AddressId in the example below) by concatenation of a required constant or dynamic value with the SequentialNumber property provided by the base UserFriendlyIdPersistentObject class. So, if you need to have a different format, modify the PersistentAliasAttribute expression as your business needs dictate:
[C#][PersistentAlias("concat('A', ToStr(SequentialNumber))")]publicstringAddressId{get{returnConvert.ToString(EvaluateAlias("AddressId"));}}
IMPORTANT NOTES
1. If your connection string contains the Password parameter, then rework the SequenceGeneratorInitializer.Initialize method to not use the XafApplication.ConnectionString or XafApplication.Connection.ConnectionString properties, because XAF encrypts the specified password for safety reasons. Instead, either specify the connection string directly or read it from the configuration file.
2. The sequential number functionality shown in this example does not work with shared parts (a part of the Domain Components (DC) technology) in the current version, because it requires a custom base class, which is not allowed for shared parts.
3. This solution is not yet tested in the middle-tier and SecuredObjectSpaceProvider scenario and most likely, it will have to be modified to support its specifics.
4. As an alternative, you can use a more simple solution that is using the DistributedIdGeneratorHelper.Generate method as shown in the FeatureCenter demo ("%Public%\Documents\DXperience 13.X Demos\eXpressApp Framework\FeatureCenter\CS\FeatureCenter.Module\KeyProperty\GuidKeyPropertyObject.cs" ) or at How to generate a sequential and user-friendly identifier field within a business class
Question Comments
Added By: Mr. Murat YILMAZ at: 10/7/2012 9:15:18 AM
Thanks for the example. I developed ISequentialNumber domain component which based on this article and code. Now this sequential number functonatility shon in this example work with domain components and shared parts.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using DevExpress.ExpressApp.DC;
using DevExpress.Persistent.Base;
using DevExpress.Xpo;
using DevExpress.Xpo.Metadata;
using DevExpress.ExpressApp;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Persistent.Validation;
using MyWay.Xaf.Module;
using MyWay.Xaf.Utils.Sequence;
namespace MyWay.Xaf.Module
{
[DomainComponent]
[NavigationItem]
public interface ISequentialNumber
{
#region PROPERTIES
#region SequentialNo
[Persistent]
string SequentialNo
{
get;
}
#endregion SequentialNo
#region SequentialNumber
[System.ComponentModel.Browsable(false)]
[Indexed(Unique = false)]
long SequentialNumber
{
get ;
set;
}
#endregion SequentialNumber
#endregion PROPERTIES
}
[DomainLogic(typeof(ISequentialNumber))]
public class ISequentialNumberLogic
{
public static string Get_SequentialNo(ISequentialNumber instance)
{
return "asd" + instance.SequentialNumber.ToString();
}
private static object syncRoot = new object();
private static SequenceGenerator sequenceGenerator;
#region METHODS
#region PUBLIC METHODS
#region GenerateSequence
public static void GenerateSequence(ISequentialNumber instance)
{
lock (syncRoot)
{
Dictionary<string, bool> typeToExistsMap = new Dictionary<string, bool>();
foreach (object item in ((XPBaseObject)instance).Session.GetObjectsToSave())
{
typeToExistsMap[((XPBaseObject)instance).Session.GetClassInfo(item).FullName] = true;
}
if (sequenceGenerator == null)
{
sequenceGenerator = new SequenceGenerator(typeToExistsMap);
}
SubscribeToEvents(((XPBaseObject)instance).Session);
OnSequenceGenerated(sequenceGenerator.GetNextSequence(((XPBaseObject)instance).ClassInfo), instance);
}
}
#endregion GenerateSequence
#endregion PUBLIC METHODS
#region PROTECTED METHODS
#region OnSaving
public static void OnSaving(ISequentialNumber instance)
{
try
{
//base.OnSaving();
if (((XPBaseObject)instance).Session.IsNewObject(instance) && !typeof(NestedUnitOfWork).IsInstanceOfType(((XPBaseObject)instance).Session))
{
GenerateSequence(instance);
}
}
catch
{
CancelSequence(((XPBaseObject)instance).Session);
throw;
}
}
#endregion OnSaving
#endregion PROTECTED METHODS
#region INTERNAL METHODS
#endregion INTERNAL METHODS
#region PRIVATE METHODS
#region AcceptSequence
private static void AcceptSequence(Session session)
{
lock (syncRoot)
{
if (sequenceGenerator != null)
{
try
{
sequenceGenerator.Accept();
}
finally
{
CancelSequence(session);
}
}
}
}
#endregion AcceptSequence
#region CancelSequence
private static void CancelSequence(Session session)
{
lock (syncRoot)
{
UnSubscribeFromEvents(session);
if (sequenceGenerator != null)
{
sequenceGenerator.Close();
sequenceGenerator = null;
}
}
}
#endregion CancelSequence
#region Session_AfterCommitTransaction
private static void Session_AfterCommitTransaction(object sender, SessionManipulationEventArgs e)
{
AcceptSequence(e.Session);
}
#endregion Session_AfterCommitTransaction
#region Session_AfterRollBack
private static void Session_AfterRollBack(object sender, SessionManipulationEventArgs e)
{
CancelSequence(e.Session);
}
#endregion Session_AfterRollBack
#region Session_FailedCommitTransaction
private static void Session_FailedCommitTransaction(object sender, SessionOperationFailEventArgs e)
{
CancelSequence((Session)sender);
}
#endregion Session_FailedCommitTransaction
#region SubscribeToEvents
private static void SubscribeToEvents(Session session)
{
if (!(session is NestedUnitOfWork))
{
session.AfterCommitTransaction += Session_AfterCommitTransaction;
session.AfterRollbackTransaction += Session_AfterRollBack;
session.FailedCommitTransaction += Session_FailedCommitTransaction;
}
}
#endregion SubscribeToEvents
#region UnSubscribeFromEvents
private static void UnSubscribeFromEvents(Session session)
{
if (!(session is NestedUnitOfWork))
{
session.AfterCommitTransaction -= Session_AfterCommitTransaction;
session.AfterRollbackTransaction -= Session_AfterRollBack;
session.FailedCommitTransaction -= Session_FailedCommitTransaction;
}
}
#endregion UnSubscribeFromEvents
#region OnSequenceGenerated
private static void OnSequenceGenerated(long newId, ISequentialNumber instance)
{
instance.SequentialNumber = newId;
}
#endregion OnSequenceGenerated
#endregion PRIVATE METHODS
#endregion METHODS
}
}
Hi Mr. Murat YILMAZ, Can yo provide some example to use the class. I am looking it for shared parts
Added By: Andrew Bingham 2 at: 7/8/2013 3:38:51 AMI implemented this OK in a Solution
When I eimplmented it in a different solution I got an Exception
"Message: Value cannot be null.
Parameter name: Application"
thrown at:
public static void Initialize() {
Guard.ArgumentNotNull(Application, "Application");
@Andrew: You forgot to add the following code:
public override void Setup(XafApplication application) {
base.Setup(application);
SequenceGeneratorInitializer.Register(application);
}
You will not experience this and similar difficulties if you simply add the reusable module into your solution as per instructions above.
Added By: Carlitos at: 8/23/2014 6:46:05 PMHi,
Is this now supported in Middle-Tier XAF applications?
Thanks,
Carlitos
How to configure dxCalendar
ASPxGridView - How to hide a grid column on the client side without making a round-trip to the server
This example demonstrates how to hide a grid column on the client side without making a round-trip to the server.
To accomplish this task, apply a dummy CSS class ('unitPriceColumn') to all column cells (header, data, edit, footer, group footer, and filter cells) in markup. Then, to show/hide these cells, just specify their 'display' style. Set it to the 'none' value to hide cells and to the 'table-cell' value to show cells. To specify a cell display style, I used a jQuerry CSS selector (using the 'unitPriceColumn' CSS class).
Question Comments
Added By: marc parthoens at: 8/25/2014 4:20:36 AM
Can you show how I can get the value/text of a hidden column SERVER side.
Thanks
Hello,
To process your recent post more efficiently, I created a separate ticket on your behalf: T143607: ASPxGridView - Get Hidden Column Value on Server Side. This ticket is currently in our processing queue. Our team will address it as soon as we have any updates.
How to Show the Grid's Print Preview
This example shows how to preview the grid before it is printed.
Question Comments
Added By: Angel s at: 8/3/2013 2:42:30 AM
hi
my datagrid content is Right to left, but in preview it is left to right?!
run this example,but it isnot to save the file. 远程服务器返回了错误:notfound。why?
Added By: Andrey Kunitsyn (DevExpress Support) at: 8/25/2014 7:30:41 AMHello,
To process your recent post more efficiently, I created a separate ticket on your behalf: T143708: The "File not found" error is shown on an attempt to save a previewed document. This ticket is currently in our processing queue. Our team will address it as soon as we have any updates.
Thanks,
Andrey
OData service - How to use stored procedures
This example illustrates how to use stored procedures with OData. You can learn how to map an entity to a stored procedure in this blog: Stored Procedures in the Entity Framework. This blog describes how to expose a stored procedure in the OData service: oData and Stored Procedures aka Service Operations. We suggest that you use the DevExtreme WCF OData Service project template when creating the OData service.
To execute a web method of the OData service, use the ODataStore.get method. For example:
[JScript]store.get("TestOperation", { param1: 123, param2: "abc"}).done(...);
Here is a good blog describing how to configure the method so it supports the JSON format: Creating a .NET WCF 4.0 JSON Service.
Question Comments
Added By: Enderson Salas at: 8/25/2014 9:23:07 AM
Can I use this to a stored procedure with a insert?
How to implement cascaded combo box columns in ASPxGridView without using templates
The example illustrates how to create an editable grid with cascaded combobox columns. The implementation of the example includes the handling of manual callbacks and providing items for appropriate arguments.
By default, the combobox column uses a datasource that displays all records to show a user Text values instead of record keys.
Question Comments
Added By: Deborah Carter at: 5/9/2014 3:45:18 AM
I looked at the code below and it looks like what I have. The page just never gets to it. Here is the complete asp page:
<%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="mnt_Person.aspx.vb" Inherits="mnt_Person" %>
<%@ Register assembly="DevExpress.Web.v13.2, Version=13.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxGridView" tagprefix="dx" %>
<%@ Register assembly="DevExpress.Web.v13.2, Version=13.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxEditors" tagprefix="dx" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript">
// <![CDATA[
var lastServiceDivNo = null;
function OnServiceDivNoChanged(cmbServiceDivisionNm) {
if (grid.GetEditor("ServiceAreaNm").InCallback())
lastServiceDivNo = cmbServiceDivisionNm.GetValue().toString();
else
grid.GetEditor("ServiceAreaNm").PerformCallback(cmbServiceDivisionNm.GetValue().toString());
}
function OnEndCallback(s, e) {
if (lastServiceDivNo) {
grid.GetEditor("ServiceAreaNm").PerformCallback(lastServiceDivNo);
lastServiceDivNo = null;
}
}
// ]]>
</script>
<asp:Label ID="Label2" runat="server" CssClass="pageheader" Width="100%" Text="Supervisor Maintenance"></asp:Label>
<br />
<dx:ASPxGridView ID="grid" ClientInstanceName="grid" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" KeyFieldName="Person_Key">
<Columns>
<dx:GridViewCommandColumn ShowClearFilterButton="True" ShowNewButton="True"
VisibleIndex="1">
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn FieldName="Person_Key" VisibleIndex="2">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Supervisor_No" VisibleIndex="3">
</dx:GridViewDataTextColumn>
<dx:GridViewDataComboBoxColumn FieldName="ServiceDivisionNm" VisibleIndex="4">
<PropertiesComboBox DataSourceID="SqlDataSource2" TextField="ServiceDivisionNm" EnableSynchronization="False"
ValueField="ServiceDivisionNo">
<ClientSideEvents SelectedIndexChanged="function(s, e) {OnServiceDivNoChanged(s); }"></ClientSideEvents>
</PropertiesComboBox>
</dx:GridViewDataComboBoxColumn>
<dx:GridViewDataComboBoxColumn FieldName="ServiceAreaNm" VisibleIndex="5">
<PropertiesComboBox EnableSynchronization="False">
<ClientSideEvents EndCallback="OnEndCallback"></ClientSideEvents>
</PropertiesComboBox>
</dx:GridViewDataComboBoxColumn>
<dx:GridViewDataTextColumn FieldName="TransNoPrefix" VisibleIndex="8">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Supervisor" VisibleIndex="9">
</dx:GridViewDataTextColumn>
<dx:GridViewDataCheckColumn FieldName="IsActive" VisibleIndex="10">
</dx:GridViewDataCheckColumn>
</Columns>
<SettingsEditing Mode="Batch">
</SettingsEditing>
<Settings ShowFilterRow="True" />
<SettingsCommandButton>
<ClearFilterButton Text="Clear">
</ClearFilterButton>
</SettingsCommandButton>
<SettingsDataSecurity AllowDelete="False" />
</dx:ASPxGridView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:CCFieldServiceConnectionString %>"
SelectCommand="SELECT distinct [ServiceDivisionNo], [ServiceDivisionNm] FROM [dim_Organization]">
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:CCFieldServiceConnectionString %>"
SelectCommand="SELECT distinct [ServiceAreaNo], [ServiceAreaNm] FROM [dim_Organization] WHERE ServiceDivisionNo = ? ">
<SelectParameters>
<asp:Parameter Name="?" />
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:CCFieldServiceConnectionString %>"
SelectCommand="SELECT dbo.dim_Person.Person_Key, dbo.dim_Person.Supervisor_No, dbo.dim_Person.TransNoPrefix, dbo.dim_Person.Supervisor, dbo.dim_Person.IsActive, dbo.dim_Organization.ServiceAreaNm, dbo.dim_Organization.ServiceDivisionNm FROM dbo.dim_Person INNER JOIN dbo.dim_Organization ON dbo.dim_Person.ServiceDivisionNo = dbo.dim_Organization.ServiceDivisionNo AND dbo.dim_Person.ServiceAreaNo = dbo.dim_Organization.ServiceAreaNo WHERE (dbo.dim_Person.IsActive = 1)">
</asp:SqlDataSource>
</asp:Content>
Added By: Larry (DevExpress Support) at: 5/9/2014 5:31:02 AM Hello Deborah,So, I have created a separate ticket on your behalf to process your inquiry more effectively:
How to implement cascaded combo box columns in ASPxGridView without using templates
Please refer to it for further correspondence.
Added By: S Abowitz at: 8/25/2014 10:26:50 AM
I don't understand how this code work for new rows if in the grid_celleditorinitialize sub, if checks If (Not grid.IsNewRowEditing) Then before getting the filter value, so how does the second combo prefill for new rows after country is selected?
Please explain,
How to: Use MessageBoxService in View Models derived from the ViewModelBase class
How to: Use MessageBoxService in POCO View Models
TreeList - Editing via Context Menu
The main implementation details:
- Store the Parent Node Key data within a node by handing the TreeListSettings.HtmlRowPrepared event;
- Handle the client-side ASPxClientTreeList.ContextMenu event, show the context menu via the client-side ASPxClientPopupMenu.ShowAtPos method, and store information about a hovered node key/parent key;
- Handle the client-side ASPxClientMenuBase.ItemClick event and invoke the corresponding CRUD command via ASPxTreeList's client-side API.