Mini Kabibi Habibi
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Resources">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:int" minOccurs="0" />
<xs:element name="Name" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Appointments">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:int" minOccurs="0" />
<xs:element name="EventType" type="xs:int" minOccurs="0" />
<xs:element name="StartDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="EndDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="AllDay" type="xs:boolean" minOccurs="0" />
<xs:element name="Subject" type="xs:string" minOccurs="0" />
<xs:element name="Location" type="xs:string" minOccurs="0" />
<xs:element name="Description" type="xs:string" minOccurs="0" />
<xs:element name="Status" type="xs:int" minOccurs="0" />
<xs:element name="Label" type="xs:int" minOccurs="0" />
<xs:element name="ResourceID" type="xs:int" minOccurs="0" />
<xs:element name="RecurrenceInfo" type="xs:string" minOccurs="0" />
<xs:element name="ReminderInfo" type="xs:string" minOccurs="0" />
<xs:element name="ContactInfo" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Messages">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:int" minOccurs="0" />
<xs:element name="Date" type="xs:dateTime" minOccurs="0" />
<xs:element name="From" type="xs:string" minOccurs="0" />
<xs:element name="Subject" type="xs:string" minOccurs="0" />
<xs:element name="Text" type="xs:string" minOccurs="0" />
<xs:element name="HasAttachment" type="xs:boolean" minOccurs="0" />
<xs:element name="Folder" type="xs:string" minOccurs="0" />
<xs:element name="IsReply" type="xs:boolean" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<Resources>
<ID>1</ID>
<Name>Development</Name>
</Resources>
<Resources>
<ID>2</ID>
<Name>Webinars</Name>
</Resources>
<Resources>
<ID>3</ID>
<Name>Birthday</Name>
</Resources>
<Resources>
<ID>4</ID>
<Name>Family</Name>
</Resources>
<Appointments>
<ID>1</ID>
<EventType>0</EventType>
<StartDate>2011-04-01T09:00:00+04:00</StartDate>
<EndDate>2011-04-01T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Functional testing deep dive</Subject>
<Status>2</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>2</ID>
<EventType>0</EventType>
<StartDate>2011-04-04T09:00:00+04:00</StartDate>
<EndDate>2011-04-04T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Julian on JavaScript - Learning from reading: underscore.js</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>3</ID>
<EventType>0</EventType>
<StartDate>2011-04-05T09:00:00+04:00</StartDate>
<EndDate>2011-04-05T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Advanced CodeRush Plug-ins – Working with the TextDocument and TextView</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>4</ID>
<EventType>0</EventType>
<StartDate>2011-04-06T09:00:00+04:00</StartDate>
<EndDate>2011-04-06T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - ASP.NET MVC Charting Preview</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>5</ID>
<EventType>0</EventType>
<StartDate>2011-04-07T09:00:00+04:00</StartDate>
<EndDate>2011-04-07T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Preview of v2011.1 ASP.NET features announced, so far…</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>6</ID>
<EventType>0</EventType>
<StartDate>2011-04-08T09:00:00+04:00</StartDate>
<EndDate>2011-04-08T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Rich data visualization with Pivot Grid and Charts</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>7</ID>
<EventType>0</EventType>
<StartDate>2011-04-13T09:00:00+04:00</StartDate>
<EndDate>2011-04-13T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Ask the ASP.NET Team</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>8</ID>
<EventType>0</EventType>
<StartDate>2011-04-14T09:00:00+04:00</StartDate>
<EndDate>2011-04-14T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Ask the DevExpress Charting Team</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>9</ID>
<EventType>0</EventType>
<StartDate>2011-04-15T09:00:00+04:00</StartDate>
<EndDate>2011-04-15T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Reporting with WPF (and MVVM)</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>10</ID>
<EventType>0</EventType>
<StartDate>2011-04-19T09:00:00+04:00</StartDate>
<EndDate>2011-04-19T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - DevExpress Day of Design</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>11</ID>
<EventType>0</EventType>
<StartDate>2011-04-20T09:00:00+04:00</StartDate>
<EndDate>2011-04-20T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Introduction to Pivot Grid for WPF</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>12</ID>
<EventType>0</EventType>
<StartDate>2011-04-25T09:00:00+04:00</StartDate>
<EndDate>2011-04-25T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Ask the DevExpress Reporting Team</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>13</ID>
<EventType>0</EventType>
<StartDate>2011-04-27T09:00:00+04:00</StartDate>
<EndDate>2011-04-27T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Implementing the MVVM Pattern</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>14</ID>
<EventType>0</EventType>
<StartDate>2011-05-02T09:00:00+04:00</StartDate>
<EndDate>2011-05-02T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Julian on JavaScript - Learning from reading: jQuery – Part 1</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>15</ID>
<EventType>0</EventType>
<StartDate>2011-05-04T09:00:00+04:00</StartDate>
<EndDate>2011-05-04T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Exploring ASP.NET Charting Client Side Development</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>16</ID>
<EventType>0</EventType>
<StartDate>2011-05-05T09:00:00+04:00</StartDate>
<EndDate>2011-05-05T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Improving Web Site Performance and Scalability While Saving Money</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>17</ID>
<EventType>0</EventType>
<StartDate>2011-05-11T09:00:00+04:00</StartDate>
<EndDate>2011-05-11T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Reporting with Silverlight (and MVVM)</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>18</ID>
<EventType>0</EventType>
<StartDate>2011-05-16T09:00:00+04:00</StartDate>
<EndDate>2011-05-16T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Ask the DevExpress Charting Team</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>19</ID>
<EventType>0</EventType>
<StartDate>2011-05-23T09:00:00+04:00</StartDate>
<EndDate>2011-05-23T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Julian on JavaScript - Learning from reading: jQuery – Part 2</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>20</ID>
<EventType>0</EventType>
<StartDate>2011-05-24T09:00:00+04:00</StartDate>
<EndDate>2011-05-24T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Advanced CodeRush Plug-ins – Custom Painting</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>21</ID>
<EventType>0</EventType>
<StartDate>2011-05-25T09:00:00+04:00</StartDate>
<EndDate>2011-05-25T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Ask the DevExpress Reporting Team</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>22</ID>
<EventType>0</EventType>
<StartDate>2011-05-26T09:00:00+04:00</StartDate>
<EndDate>2011-05-26T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Preview of what's Coming up for WPF and Silverlight in 11.1</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>23</ID>
<EventType>0</EventType>
<StartDate>2011-05-31T09:00:00+04:00</StartDate>
<EndDate>2011-05-31T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Ask the ASP.NET Team</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>24</ID>
<EventType>0</EventType>
<StartDate>2011-05-27T09:00:00+04:00</StartDate>
<EndDate>2011-05-27T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Deploying XAF on Azure</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>25</ID>
<EventType>0</EventType>
<StartDate>2011-06-01T09:00:00+04:00</StartDate>
<EndDate>2011-06-01T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - CodeRush Feature Workshop: Quick Pair</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>26</ID>
<EventType>0</EventType>
<StartDate>2011-06-06T09:00:00+04:00</StartDate>
<EndDate>2011-06-06T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Julian on JavaScript: basic use of jQuery</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>27</ID>
<EventType>0</EventType>
<StartDate>2011-06-07T09:00:00+04:00</StartDate>
<EndDate>2011-06-07T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - TDD in CodeRush</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>28</ID>
<EventType>0</EventType>
<StartDate>2011-06-08T09:00:00+04:00</StartDate>
<EndDate>2011-06-08T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - CodeRush Feature Workshop: Favorite Views (Part 1)</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>29</ID>
<EventType>0</EventType>
<StartDate>2011-06-09T09:00:00+04:00</StartDate>
<EndDate>2011-06-09T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Introduction to WP7 Development with Silverlight and XNA</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>30</ID>
<EventType>0</EventType>
<StartDate>2011-06-13T09:00:00+04:00</StartDate>
<EndDate>2011-06-13T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - 11.1 Reporting Preview – New ASP.NET Features</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>31</ID>
<EventType>0</EventType>
<StartDate>2011-06-14T09:00:00+04:00</StartDate>
<EndDate>2011-06-14T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Advanced CodeRush Plug-ins – Working with Source Code</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>32</ID>
<EventType>0</EventType>
<StartDate>2011-06-15T09:00:00+04:00</StartDate>
<EndDate>2011-06-15T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Ask the ASP.NET Team</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>33</ID>
<EventType>0</EventType>
<StartDate>2011-06-16T09:00:00+04:00</StartDate>
<EndDate>2011-06-16T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Deeper Dive Into XNA on Windows Phone</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>34</ID>
<EventType>0</EventType>
<StartDate>2011-06-17T09:00:00+04:00</StartDate>
<EndDate>2011-06-17T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - CodeRush Feature Workshop: Easier Identifiers</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>35</ID>
<EventType>0</EventType>
<StartDate>2011-06-21T09:00:00+04:00</StartDate>
<EndDate>2011-06-21T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Advanced CodeRush Plug-ins – Creating Refactoring Providers and Code Providers</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>36</ID>
<EventType>0</EventType>
<StartDate>2011-06-22T09:00:00+04:00</StartDate>
<EndDate>2011-06-22T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Introducing the DXGauge Suite for WPF and Silverlight</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>37</ID>
<EventType>0</EventType>
<StartDate>2011-06-23T09:00:00+04:00</StartDate>
<EndDate>2011-06-23T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Deeper Dive Into Silverlight on Windows Phone</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>38</ID>
<EventType>0</EventType>
<StartDate>2011-06-24T09:00:00+04:00</StartDate>
<EndDate>2011-06-24T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Ask DevExpress - XAF</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>39</ID>
<EventType>0</EventType>
<StartDate>2011-06-27T09:00:00+04:00</StartDate>
<EndDate>2011-06-27T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Julian on JavaScript: Using jQuery with DevExpress ASP.NET Controls (Part 1)</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>40</ID>
<EventType>0</EventType>
<StartDate>2011-06-28T09:00:00+04:00</StartDate>
<EndDate>2011-06-28T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Introducing the ASP.NET Docking Suite</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>41</ID>
<EventType>0</EventType>
<StartDate>2011-06-29T09:00:00+04:00</StartDate>
<EndDate>2011-06-29T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - CodeRush Feature Workshop: IDisposable</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>42</ID>
<EventType>0</EventType>
<StartDate>2011-06-30T09:00:00+04:00</StartDate>
<EndDate>2011-06-30T10:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Webinar - Building a Scrolling Tile Engine with XNA on Windows Phone</Subject>
<Status>0</Status>
<Label>2</Label>
<ResourceID>2</ResourceID>
</Appointments>
<Appointments>
<ID>100</ID>
<EventType>0</EventType>
<StartDate>2011-04-12T00:00:00+04:00</StartDate>
<EndDate>2011-04-15T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>MIX conference</Subject>
<Location>Las Vegas</Location>
<Status>3</Status>
<Label>6</Label>
<ResourceID>1</ResourceID>
</Appointments>
<Appointments>
<ID>101</ID>
<EventType>0</EventType>
<StartDate>2011-04-18T13:00:00+04:00</StartDate>
<EndDate>2011-04-18T16:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>WPF Presentation</Subject>
<Location>Office</Location>
<Status>2</Status>
<Label>2</Label>
<ResourceID>1</ResourceID>
</Appointments>
<Appointments>
<ID>102</ID>
<EventType>0</EventType>
<StartDate>2011-03-30T13:00:00+04:00</StartDate>
<EndDate>2011-03-30T16:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Silverlight Presentation</Subject>
<Location>Office</Location>
<Status>2</Status>
<Label>2</Label>
<ResourceID>1</ResourceID>
</Appointments>
<Appointments>
<ID>103</ID>
<EventType>0</EventType>
<StartDate>2011-04-08T13:00:00+04:00</StartDate>
<EndDate>2011-04-08T16:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>HTML5 Presentation</Subject>
<Location>Office</Location>
<Status>2</Status>
<Label>2</Label>
<ResourceID>1</ResourceID>
</Appointments>
<Appointments>
<ID>104</ID>
<EventType>0</EventType>
<StartDate>2011-05-03T00:00:00+04:00</StartDate>
<EndDate>2011-05-05T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>ASP.NET MVC conference</Subject>
<Location>Los Angeles</Location>
<Status>3</Status>
<Label>6</Label>
<ResourceID>1</ResourceID>
</Appointments>
<Appointments>
<ID>105</ID>
<EventType>1</EventType>
<StartDate>2009-03-15T18:00:00+04:00</StartDate>
<EndDate>2009-03-15T20:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Air Hockey game</Subject>
<Status>1</Status>
<Label>3</Label>
<ResourceID>4</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="03/15/2009 18:00:00" End="05/19/2009 18:00:00" WeekDays="4" Id="9f904745-8408-4372-83ea-b293fe7fc524" OccurrenceCount="10" Type="1" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>75</ID>
<EventType>1</EventType>
<StartDate>2009-04-16T11:00:00+04:00</StartDate>
<EndDate>2009-04-16T16:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Shopping</Subject>
<Status>1</Status>
<Label>7</Label>
<ResourceID>4</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="04/16/2009 11:00:00" End="06/20/2009 11:00:00" WeekDays="64" Id="6924e0d1-894a-46f0-a0cd-4c73fece9caa" OccurrenceCount="10" Type="1" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>77</ID>
<EventType>0</EventType>
<StartDate>2011-04-18T00:00:00+04:00</StartDate>
<EndDate>2011-05-02T00:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Vacation</Subject>
<Location>Miami</Location>
<Status>0</Status>
<Label>4</Label>
<ResourceID>4</ResourceID>
</Appointments>
<Appointments>
<ID>78</ID>
<EventType>0</EventType>
<StartDate>2011-04-05T00:00:00+04:00</StartDate>
<EndDate>2011-04-12T00:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Summit</Subject>
<Location>Las Vegas</Location>
<Status>2</Status>
<Label>6</Label>
<ResourceID>1</ResourceID>
</Appointments>
<Appointments>
<ID>79</ID>
<EventType>1</EventType>
<StartDate>2009-04-06T18:00:00+04:00</StartDate>
<EndDate>2009-04-06T20:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Gym</Subject>
<Status>1</Status>
<Label>3</Label>
<ResourceID>4</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="04/06/2009 18:00:00" End="06/10/2009 18:00:00" WeekDays="8" Id="fc9caf7a-e177-478d-95e9-6aca75f6639e" OccurrenceCount="10" Type="1" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>50</ID>
<EventType>1</EventType>
<StartDate>2009-04-05T09:00:00+04:00</StartDate>
<EndDate>2009-04-05T12:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Planning Meeting</Subject>
<Location>Office</Location>
<Status>2</Status>
<Label>1</Label>
<ResourceID>1</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="04/05/2009 09:00:00" End="06/07/2009 09:00:00" WeekDays="16" Id="9d5a653b-83a0-49ea-8d58-2f9d470d527a" OccurrenceCount="10" Periodicity="4" Type="1" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>51</ID>
<EventType>1</EventType>
<StartDate>2009-04-05T13:00:00+04:00</StartDate>
<EndDate>2009-04-05T16:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Planning Meeting</Subject>
<Location>Office</Location>
<Status>2</Status>
<Label>1</Label>
<ResourceID>1</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="04/05/2009 13:00:00" End="06/07/2009 13:00:00" WeekDays="16" Id="5770a27b-a808-4b9d-8219-192a3c610231" OccurrenceCount="10" Periodicity="4" Type="1" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>52</ID>
<EventType>1</EventType>
<StartDate>2009-04-06T10:00:00+04:00</StartDate>
<EndDate>2009-04-06T10:15:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Daily Meeting</Subject>
<Location>Office</Location>
<Status>2</Status>
<Label>2</Label>
<ResourceID>1</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="04/06/2009 10:00:00" End="04/27/2009 10:00:00" WeekDays="62" Id="f88efc65-03cd-4389-a38a-0c7ad5222f6d" OccurrenceCount="10" Type="1" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>54</ID>
<EventType>1</EventType>
<StartDate>2009-04-05T13:00:00+04:00</StartDate>
<EndDate>2009-04-05T17:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Demo Meeting</Subject>
<Location>Office</Location>
<Status>2</Status>
<Label>5</Label>
<ResourceID>1</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="04/05/2009 13:00:00" End="06/08/2009 13:00:00" WeekDays="4" Id="7d0b479f-2ad5-4695-ae38-405345b38ebc" OccurrenceCount="10" Periodicity="4" Type="1" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>55</ID>
<EventType>1</EventType>
<StartDate>2011-04-06T16:00:00+04:00</StartDate>
<EndDate>2011-04-06T17:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Retrospective Meeting</Subject>
<Location>Office</Location>
<Status>2</Status>
<Label>2</Label>
<ResourceID>1</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="04/06/2011 16:00:00" End="07/29/2011 16:00:00" WeekDays="8" Id="07d38bbb-050d-437f-a877-fc19e8b16247" OccurrenceCount="10" Periodicity="4" Type="1" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>56</ID>
<EventType>1</EventType>
<StartDate>1979-01-08T00:00:00+04:00</StartDate>
<EndDate>1979-01-09T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Naomi Moreno</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="01/08/1979 00:00:00" End="01/02/1989 00:00:00" AllDay="True" DayNumber="8" WeekOfMonth="0" WeekDays="8" Id="b3cff674-842c-4090-8c6c-cb3d8612447b" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>57</ID>
<EventType>1</EventType>
<StartDate>1986-02-16T00:00:00+04:00</StartDate>
<EndDate>1986-02-17T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Jessie She</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="02/16/1986 00:00:00" End="01/07/1996 00:00:00" AllDay="True" DayNumber="16" WeekOfMonth="0" WeekDays="8" Id="6558db63-8f22-409a-93d2-cb33ab999b44" Month="2" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>58</ID>
<EventType>1</EventType>
<StartDate>1984-03-11T00:00:00+04:00</StartDate>
<EndDate>1984-03-12T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Julia Bell</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="03/11/1984 00:00:00" End="01/02/1994 00:00:00" AllDay="True" DayNumber="11" WeekOfMonth="0" WeekDays="8" Id="754b5156-ea03-4c55-9e8a-32e93a393775" Month="3" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>59</ID>
<EventType>1</EventType>
<StartDate>1981-03-23T00:00:00+04:00</StartDate>
<EndDate>1981-03-24T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Nathan Bryant</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="03/23/1981 00:00:00" End="01/07/1991 00:00:00" AllDay="True" DayNumber="23" WeekOfMonth="0" WeekDays="8" Id="9e857045-443d-4ec2-9220-9655a5c967fb" Month="3" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>60</ID>
<EventType>1</EventType>
<StartDate>1988-04-18T00:00:00+04:00</StartDate>
<EndDate>1988-04-19T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Diana Martin</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="04/18/1988 00:00:00" End="01/05/1998 00:00:00" AllDay="True" DayNumber="18" WeekOfMonth="0" WeekDays="8" Id="e5d61383-afef-4fde-bf92-d4a545b935cf" Month="4" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>61</ID>
<EventType>1</EventType>
<StartDate>1948-05-05T00:00:00+04:00</StartDate>
<EndDate>1948-05-06T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Connor Jenkins</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="05/05/1948 00:00:00" End="01/01/1958 00:00:00" AllDay="True" DayNumber="5" WeekOfMonth="0" WeekDays="8" Id="166943e0-6661-4af6-ba30-37b8709580f0" Month="5" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>62</ID>
<EventType>1</EventType>
<StartDate>1963-05-24T00:00:00+04:00</StartDate>
<EndDate>1963-05-25T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Maria Hernandez</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="05/24/1963 00:00:00" End="01/05/1973 00:00:00" AllDay="True" DayNumber="24" WeekOfMonth="0" WeekDays="8" Id="9c715576-3736-4931-bf6a-32dbb34fec00" Month="5" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>63</ID>
<EventType>1</EventType>
<StartDate>1984-06-14T00:00:00+04:00</StartDate>
<EndDate>1984-06-15T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Alex Martin</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="06/14/1984 00:00:00" End="01/06/1994 00:00:00" AllDay="True" DayNumber="14" WeekOfMonth="0" WeekDays="8" Id="f092e799-0fda-4515-973e-99c011f396a8" Month="6" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>64</ID>
<EventType>1</EventType>
<StartDate>1977-07-07T00:00:00+04:00</StartDate>
<EndDate>1977-07-08T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Gary Rubio</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="07/07/1977 00:00:00" End="01/01/1987 00:00:00" AllDay="True" DayNumber="7" WeekOfMonth="0" WeekDays="8" Id="4099f936-7cfe-4587-9b48-e91574b4e2d5" Month="7" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>66</ID>
<EventType>1</EventType>
<StartDate>1985-07-15T00:00:00+04:00</StartDate>
<EndDate>1985-07-16T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Jesse Gonzalez</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="07/15/1985 00:00:00" End="01/02/1995 00:00:00" AllDay="True" DayNumber="15" WeekOfMonth="0" WeekDays="8" Id="b256919c-94d7-4ffa-ad51-083323e99572" Month="7" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>67</ID>
<EventType>1</EventType>
<StartDate>1965-08-03T00:00:00+04:00</StartDate>
<EndDate>1965-08-04T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Julia Evans</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="08/03/1965 00:00:00" End="01/07/1975 00:00:00" AllDay="True" DayNumber="3" WeekOfMonth="0" WeekDays="8" Id="7bfcc9f3-93a4-4446-b4f0-4564f3616f37" Month="8" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>68</ID>
<EventType>1</EventType>
<StartDate>1988-08-09T00:00:00+04:00</StartDate>
<EndDate>1988-08-10T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Andrew Lee</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="08/09/1988 00:00:00" End="01/06/1998 00:00:00" AllDay="True" DayNumber="9" WeekOfMonth="0" WeekDays="8" Id="02529070-22de-4165-9920-f016cc42f88c" Month="8" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>69</ID>
<EventType>1</EventType>
<StartDate>1953-09-17T00:00:00+04:00</StartDate>
<EndDate>1953-09-18T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Connor Lopez</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="09/17/1953 00:00:00" End="01/03/1963 00:00:00" AllDay="True" DayNumber="17" WeekOfMonth="0" WeekDays="8" Id="7c38d004-63f8-432c-9619-62c387a9b976" Month="9" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>70</ID>
<EventType>1</EventType>
<StartDate>1989-09-10T00:00:00+04:00</StartDate>
<EndDate>1989-09-11T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Xavier Richardson</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="09/10/1989 00:00:00" End="01/03/1999 00:00:00" AllDay="True" DayNumber="10" WeekOfMonth="0" WeekDays="8" Id="ddb8e56b-9cc5-467b-b99f-47320f99df6a" Month="9" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>71</ID>
<EventType>1</EventType>
<StartDate>1956-10-06T00:00:00+04:00</StartDate>
<EndDate>1956-10-07T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Miguel Jones</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="10/06/1956 00:00:00" End="01/01/1966 00:00:00" AllDay="True" DayNumber="6" WeekOfMonth="0" WeekDays="8" Id="355c0f99-72cb-4e09-9328-e5fe7f996a94" Month="10" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>72</ID>
<EventType>1</EventType>
<StartDate>1982-11-25T00:00:00+04:00</StartDate>
<EndDate>1982-11-26T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Alberto Alonso</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="11/25/1982 00:00:00" End="01/02/1992 00:00:00" AllDay="True" DayNumber="25" WeekOfMonth="0" WeekDays="8" Id="484fcec6-8f7c-4a3b-a73f-8c8fe827e21e" Month="11" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>73</ID>
<EventType>1</EventType>
<StartDate>1971-12-01T00:00:00+04:00</StartDate>
<EndDate>1971-12-02T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Rebekah Raman</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="12/01/1971 00:00:00" End="01/07/1981 00:00:00" AllDay="True" WeekOfMonth="0" WeekDays="8" Id="4947dfc0-1137-4975-9def-c3201e913652" Month="12" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>74</ID>
<EventType>1</EventType>
<StartDate>1987-04-08T00:00:00+04:00</StartDate>
<EndDate>1987-04-09T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Rafael Raje</Subject>
<Status>3</Status>
<Label>8</Label>
<ResourceID>3</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="04/08/1987 00:00:00" End="01/01/1997 00:00:00" AllDay="True" DayNumber="8" WeekOfMonth="0" WeekDays="8" Id="0de039c6-0568-4b6a-bebc-776c7e193fa4" Month="4" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>76</ID>
<EventType>1</EventType>
<StartDate>2011-04-16T00:00:00+04:00</StartDate>
<EndDate>2011-04-17T00:00:00+04:00</EndDate>
<AllDay>true</AllDay>
<Subject>Wedding day</Subject>
<Status>0</Status>
<Label>9</Label>
<ResourceID>4</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="04/16/2011 00:00:00" End="01/02/2021 00:00:00" AllDay="True" DayNumber="16" WeekOfMonth="0" WeekDays="8" Id="d3440791-7854-4fc3-b7a0-f32ec15fd9f4" Month="4" OccurrenceCount="10" Type="3" /></RecurrenceInfo>
</Appointments>
<Appointments>
<ID>82</ID>
<EventType>0</EventType>
<StartDate>2011-04-08T19:00:00+04:00</StartDate>
<EndDate>2011-04-08T20:00:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Bowling with Michelle</Subject>
<Location>Bowling Club, 51 Madisson Ave</Location>
<Status>3</Status>
<Label>3</Label>
<ResourceID>4</ResourceID>
</Appointments>
<Appointments>
<ID>83</ID>
<EventType>1</EventType>
<StartDate>2009-04-08T08:00:00+04:00</StartDate>
<EndDate>2009-04-08T08:30:00+04:00</EndDate>
<AllDay>false</AllDay>
<Subject>Wash a car</Subject>
<Status>1</Status>
<Label>3</Label>
<ResourceID>4</ResourceID>
<RecurrenceInfo><RecurrenceInfo Start="04/08/2009 08:00:00" End="06/10/2009 08:00:00" WeekDays="2" Id="2876e090-7f82-4609-a82a-0ab2840a61bb" OccurrenceCount="10" Type="1" /></RecurrenceInfo>
</Appointments>
<Messages>
<ID>273</ID>
<Date>2011-07-03T23:21:00+04:00</Date>
<From>Michael Curry cl</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>I'd also welcome the jump directly to 4.0, this product needs to be kept at the cutting edge.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>272</ID>
<Date>2011-07-03T21:04:00+04:00</Date>
<From>Kurt Wehrend</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>I think DevExpress needs to take the leap and move straight to 4.0. Our company platform is now supporting 4.0 plus as you said WPF/Silverlight requires it and are gaining more traction in the technology space.</p>
<p>This way you dont contrain development and we the customer can really benefit.</p>
<p>Take the leap, otherwise you'll be left behind.</p>
<p>Kurt</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>271</ID>
<Date>2011-07-03T18:55:00+04:00</Date>
<From>Sigurd Decroos</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>3.5 still required here! I can't convert my ERP project to 4.0 just yet. It will take another year, then, it should be possible, finally!</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>270</ID>
<Date>2011-07-03T14:06:00+04:00</Date>
<From>Chloe Anfield</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>3.5, but support VS2008. </p>
<p>I have to support a XAF application with a matching Windows Mobile application and it'd be awkward to have to use VS2010 for one half and VS2008 for the other half.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>269</ID>
<Date>2011-07-03T12:39:00+04:00</Date>
<From>David Brillon</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>3.5. &nbsp;Jumping to 4.0 is not an option right now for our client.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>268</ID>
<Date>2011-07-03T12:36:00+04:00</Date>
<From>Rinaldo Ferreira Junior</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>I vote to move to .Net 4.0 and I agree with your plan to keep support to .Net 2.0 till the next major version. We are migrating our projects from VS2008 to VS2010 but it takes time. Giving your customers this additional time is a very good decision.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>267</ID>
<Date>2011-07-02T15:42:00+04:00</Date>
<From>Juan Betancourt</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>+1 for the same said by Daniel Weisel: support for .NET 3.5</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>266</ID>
<Date>2011-07-02T14:12:00+04:00</Date>
<From>daniel weisel</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>I would love to say "+1 for .NET 4", but there is a catch: In order to use .NET 4, people need to upgrade their VS version to 2010 (since VS 2008 does not support .NET 4), and I still suspect there are plenty of developers out there still using 2008. I think I would say for sure to move to .NET 3.5, but to wait another year (until 2013) to move to .NET. by then, .NET 5 and VS 2012 should be out for a months already, and most people should be working by then with VS 2010 / 2012.</p>
<p>So, +1 for moving to .NET 3.5, but to .NET 4 I would wait until 2013.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>265</ID>
<Date>2011-07-02T10:02:00+04:00</Date>
<From>Roger Parry</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>3.5 is fine for me (probably 4 would be OK too)</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>264</ID>
<Date>2011-07-02T09:25:00+04:00</Date>
<From>Peter Thorpe</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>Although I said earlier I do have a project that is stuck at 3.5. After thinking about it your first release not supporting 2.0 is a year down the line from now, plenty of time for me and others to sort these issues. Even if I can't fix it I will just leave it with the last version of the controls supporting that version. 4.0 FTW. </p>
<p>You could always poll it like you did with IE 6.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>262</ID>
<Date>2011-07-02T05:05:00+04:00</Date>
<From>Pravin Taneja</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>I would welcome this move, change is the only constant thing in life.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>263</ID>
<Date>2011-07-02T05:05:00+04:00</Date>
<From>Mark Harby</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>We're all .NET 4 now.</p>
<p>Those not able to move up will probably be fixed on an earlier set of component releases also.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>261</ID>
<Date>2011-07-02T04:15:00+04:00</Date>
<From>Chris Motter</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>Other 3rd-party tools and components we're utilizing have moved to .NET 4.0 already so we're moving right along with them. I too wouldn't mind the jump to that so it goes without saying 3.5 is fine.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>260</ID>
<Date>2011-07-01T23:53:00+04:00</Date>
<From>Jerrie Pelser</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>I also wouldn't mind if you jumped straight to .NET 4 and VS2010</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>259</ID>
<Date>2011-07-01T23:09:00+04:00</Date>
<From>Michael Proctor [DX-Squad]</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>I hope DX isn't planning on taking a 10 year step back in their libraries, that will put us back into ActiveX :D :D</p>
<p>"By November/December, when we release v2001.2, how many will there be?"</p>
<p>I assume there might be a 1 disguised as a 0 ;)</p>
<p>I kinda agree with Nate as well, I moved my project to .NET 4 to make things easier for myself with TPL.</p>
<p>If this would allow DX to provide more features with less bugs, with better efficiency, then people still using .NET 2/3.5 can think of moving to .NET 4 themselves to get the next big features.</p>
<p>2012 will be getting closer to vNext and .NET 5 and Win8 so if you don't jump to 4 then might as well jump to 5 in 2013. :D</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>258</ID>
<Date>2011-07-01T21:04:00+04:00</Date>
<From>Peter Thorpe</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>I think this is the right decision, anything that makes your life easier and code more readable obviously eventually results in more features and less bugs for us.</p>
<p>I would think most people with .NET 2.0 projects can move to 3.5 relatively easily. 4.0 is bit more of a jump I now I have a project that couldn't currently move because of other dependencies. Maybe another jump in a year or two.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>257</ID>
<Date>2011-07-01T20:32:00+04:00</Date>
<From>Steven Rasmussen</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>I'm of the same opionion as Nate. &nbsp;Might as well move on to 4.0</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>256</ID>
<Date>2011-07-01T20:06:00+04:00</Date>
<From>Nate Laff</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text><p>Bleh, just move it to 4 :)</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>255</ID>
<Date>2011-07-01T16:33:00+04:00</Date>
<From>Julian Bucknall</From>
<Subject>DXperience moving to .NET 3.5 or above after next major release</Subject>
<Text>
<p>One of the discussions we had last week was over our continued support for Visual Studio 2005 and .NET versions prior to 3.5. We’ve come to the conclusion that we are unnecessarily limiting the features we can produce for WinForms and ASP.NET. </p> <p><span style="position: relative; padding: 0px; line-height: 15px; margin: 0px 10px; width: 170px; display: block; float: right;" id="wylio-flickr-image-2891819247"><img style="border-style: none; padding: 0px; margin: 0px;" title="Welding Starburst - photo by: Casimiro Zmtih, Source: Flickr, found with Wylio.com" alt="Welding Starburst" src="http://img.wylio.com/flickr/544/170/2891819247" width="170" height="256"><span style="padding: 0px; font-style: italic; margin: 0px; width: 100%; font-family: arial,sans-serif; background: none repeat scroll 0% 0% rgb(255, 255, 255); float: left; color: rgb(170, 170, 170); clear: both; font-size: 11px;" id="wylio-flickr-credits-2891819247" class="wylio-credits"><span style="padding: 2px; margin: 0px;" class="photoby"><span style="margin: 0px; display: block; float: left;">photo © 2008 <a style="padding: 0px; margin: 0px; color: rgb(170, 170, 170); text-decoration: underline;" title="click to visit the Flickr profile page for Casimiro Zmtih" href="http://www.flickr.com/people/cazimiro/" target="_blank">Casimiro Zmtih</a> | <a style="padding: 0px; margin: 0px; color: rgb(170, 170, 170); text-decoration: underline;" title="get more information about the photo 'Welding Starburst'" href="http://www.flickr.com/photos/26687393@N05/2891819247" target="_blank">more info </a></span><span style="display: block; float: right; margin-left: 5px;"><strong style="margin: 0px;">(via: <a style="padding: 0px; margin: 0px; color: rgb(170, 170, 170); text-decoration: underline;" title="free pictures" href="http://www.wylio.com" target="_blank">Wylio</a>)</strong></span></span></span></span>(Aside: remember that our WPF and Silverlight products now require Visual Studio 2010 and .NET 4.0 in order that we can provide the best story with regard to design-time and run-time functionality. ASP.NET MVC requires Visual Studio 2008 or later and .NET 3.5 or later already.)</p> <p>So what are we missing out with by continuing to support .NET 2.0 with our controls? The most obvious answer is LINQ and lambda expressions. Although we use them to a certain extent in example programs we provide as part of support, we can’t embrace them at all in our core code. That also means we can’t readily provide APIs that support LINQ or lambda expressions.</p> <p>Continuing, we have:</p> <ul> <li>The <code>var</code> type. Yes, we’d like to use it in certain scenarios since it has the ability to make the code easier to read. </li> <li>Partial classes? Would be nice too, although I’m not sure where we could use them, apart form in our demo apps. </li> <li>Automatic properties? +1, several times over. </li> <li>Anonymous types? Certainly. </li> <li>Extension methods? Well… OK, the jury is still out on that feature for our libraries. </li> <li>WCF? Sure thing, we’d love to use it internally where needed or to provide APIs for it. </li> </ul> <p>So, we took a look at our customer data with regard to usage of Visual Studio 2005 and .NET 2.0/3.0. It turns out that the number of customers (that we can detect, admittedly) using VS2005 is dropping remarkably quickly. From May last year to June this year, the number of customers using VS2005 has dropped 90%. A year ago, we saw 24% of customers using VS2005, now roughly 3% of our customers are still using it. By November/December, when we release v2011.2, how many will there be?</p> <p>The decision we came to is to make v2011.1 the final major release where we will support Visual Studio 2005 and versions of .NET earlier than 3.5, just as we did five years ago when v2006.3 became the final version to support Visual Studio 2002/2003 and .NET 1.x. DXperience v2011.2 will only support Visual Studio 2008 or later, and .NET 3.5 or later.</p> <p>So what do you think? Are you still using VS2005 and .NET 2.0? Or have you moved on to later versions already and found we’re holding you back? Let me know, either as a comment to this post, or by emailing me directly at <a href="mailto:julianb@devexpress.com">julianb@devexpress.com</a>. Of course, you can also email the full management team using <a href="mailto:management@devexpress.com">management@devexpress.com</a>, if you wish.</p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>254</ID>
<Date>2011-07-01T14:44:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>Web Design Tip: How-To Add jQuery Yellow Fade Effect to ASP.NET GridView</Subject>
<Text><p>Diego,</p>
<p>Thanks, yes the YFT is a pretty cool. If you think it should be part of the ASPxGridView, then please create a suggestion. If the suggestion gets popular then we'll consider adding it for the future.</p>
<p>In the meantime, implementing it using jQuery is very easy. :)</p>
<p>Thanks.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>253</ID>
<Date>2011-07-01T14:43:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>Web Design Tip: How-To Add jQuery Yellow Fade Effect to ASP.NET GridView</Subject>
<Text><p>M.Brekhof,</p>
<p>Not sure but I'll ask the XAF experts to comment how to do this for XAF web. :)</p>
<p>Thanks.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>252</ID>
<Date>2011-07-01T09:46:00+04:00</Date>
<From>Diego Presno</From>
<Subject>Web Design Tip: How-To Add jQuery Yellow Fade Effect to ASP.NET GridView</Subject>
<Text><p>Great post Mehul!</p>
<p>Any chance this would be a new option for the AspxGridView in the future? A setting for YFT be amazing. </p>
<p>If that is possibly to happen, perhaps I'll wait for this :)</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>251</ID>
<Date>2011-07-01T06:50:00+04:00</Date>
<From>M. Brekhof</From>
<Subject>Web Design Tip: How-To Add jQuery Yellow Fade Effect to ASP.NET GridView</Subject>
<Text><p>Hi Mehul,</p>
<p>I think the YFT example is very useful, any chance there will be a XAF based example?</p>
<p>regards,</p>
<p>Martin</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>250</ID>
<Date>2011-06-30T15:20:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>Web Design Tip: How-To Add jQuery Yellow Fade Effect to ASP.NET GridView</Subject>
<Text>
<p>Learn how to add the jQuery 'yellow fade technique' (YFT) to highlight changes in your ASPxGridView without getting in your end-user's way. </p> <p><img style="display: inline;" title="jQuery Yellow Fade Effect with DevExpress ASP.NET GridView" alt="jQuery Yellow Fade Effect with DevExpress ASP.NET GridView" src="http://community.devexpress.com/blogs/aspnet/YFT_Agv_1DBB4DD7.gif" width="633" height="179"></p> <h3>Yellow Fade Technique</h3> <p>The YFT was first pioneered by 37 Signals back around 2004. Why does it matter?</p> <blockquote> <p>When you edit or move something on a web page it usually forces a reload of that page. The problem is once the page reloads it’s often difficult to spot and confirm the change (especially if the change occurred somewhere in the middle of the page). The YFT uses JavaScript to create a yellow highlight that briefly spotlights the change when the page reloads. Then, in a second or two, the highlight fades and the page reverts to its normal state. The YFT makes it super easy to spot edits/changes yet its unobtrusive nature lets people quickly get back to work once a modification is confirmed. -<a href="http://37signals.com/svn/archives/000558.php" target="_blank">Matthew Linderman</a></p> </blockquote> <p>Note: While our ASPxGridView doesn't force you to reload the page because it has excellent Ajax callbacks built-in, the YFT is still a great way to let you users know what was just changed. In fact, many sites like StackOverflow.com have adopted it because of it's simplicity and elegance.</p> <h3>jQuery Effect</h3> <p>jQuery makes adding the YFT simple because it provides a 'jQuery effect' called <a href="http://docs.jquery.com/UI/Effects/Highlight#overview" target="_blank">Highlight</a> and you only need to make a single method call in your JavaScript code.</p> <h3>There's A Webinar For That</h3> <p>If you'd like to see a video version of the how-to add the YFT to ASPxGridView then <a href="http://tv.devexpress.com/#JOJjQueryASP.NET1Webinar;Webinar.tag;1" target="_blank">please watch this webinar video</a>. Julian Bucknall, our CTO and resident JavaScript guru, and myself cover this technique and other things to be aware of when using <a href="http://devexpress.com/asp" target="_blank">DevExpress ASP.NET</a> with jQuery:</p> <p><a href="http://tv.devexpress.com/#JOJjQueryASP.NET1Webinar;Webinar.tag;1" target="_blank"><img src="http://tv.devexpress.com/Content/Webinars/JOJjQueryASP.NET1Webinar/firstFrame.jpg" alt=""></a></p> <p><a href="http://community.devexpress.com/blogs/ctodx/archive/2011/06/29/webinar-wrap-up-julian-on-javascript-using-jquery-with-devexpress-asp-net-controls.aspx" target="_blank">Julian's webinar wrap-up post</a>.</p> <h3>Step-by-Step Instructions</h3> <p>Here's the steps to add the YFT when your end-user click's 'Update' in the EditForm of the ASPxGridView:</p> <p>1. Add jQuery references. For the Highlight effect, you'll need the Effects Core library. <a href="http://jqueryui.com/download" target="_blank">Download</a> it or reference it via CDN as I do in the code below.</p>
<div><div id="highlighter_580688" class="syntaxhighlighter js"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1 highlighted">4</div><div class="line number5 index4 alt2 highlighted">5</div><div class="line number6 index5 alt1 highlighted">6</div><div class="line number7 index6 alt2 highlighted">7</div><div class="line number8 index7 alt1">8</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="js plain">&lt;head runat=</code><code class="js string">"server"</code><code class="js plain">&gt;</code></div><div class="line number2 index1 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">&lt;title&gt;&lt;/title&gt;</code></div><div class="line number3 index2 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">&lt;!-- Here I</code><code class="js string">'m using links for jQuery stuff from Google CDN, it'</code><code class="js plain">s can be easily changed on local--&gt;</code></div><div class="line number4 index3 alt1 highlighted"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">&lt;link href=</code><code class="js string">"<a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css">http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css</a>"</code></div><div class="line number5 index4 alt2 highlighted"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">rel=</code><code class="js string">"stylesheet"</code> <code class="js plain">type=</code><code class="js string">"text/css"</code> <code class="js plain">/&gt;</code></div><div class="line number6 index5 alt1 highlighted"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">&lt;script type=</code><code class="js string">"text/javascript"</code> <code class="js plain">src=</code><code class="js string">"<a href="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js">http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js</a>"</code><code class="js plain">&gt;&lt;/script&gt;</code></div><div class="line number7 index6 alt2 highlighted"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">&lt;script type=</code><code class="js string">"text/javascript"</code> <code class="js plain">src=</code><code class="js string">"<a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js">http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js</a>"</code><code class="js plain">&gt;&lt;/script&gt;</code></div><div class="line number8 index7 alt1"><code class="js plain">&lt;/head&gt;</code></div></div></td></tr></tbody></table></div></div>
<p>2. Add these 2 methods:</p>
<div><div id="highlighter_217327" class="syntaxhighlighter js"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2 highlighted">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2 highlighted">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="js plain">&lt;body&gt;</code></div><div class="line number2 index1 alt1"><code class="js plain">&lt;script type=</code><code class="js string">"text/javascript"</code><code class="js plain">&gt;</code></div><div class="line number3 index2 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">var</code> <code class="js plain">editedRowSelector = </code><code class="js keyword">null</code><code class="js plain">;</code></div><div class="line number4 index3 alt1">&nbsp;</div><div class="line number5 index4 alt2 highlighted"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">function</code> <code class="js plain">OnGridCallback() {</code></div><div class="line number6 index5 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">if</code> <code class="js plain">(editedRowSelector) {</code></div><div class="line number7 index6 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">$(editedRowSelector).effect(</code><code class="js string">"highlight"</code><code class="js plain">, {}, 3000);</code></div><div class="line number8 index7 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">editedRowSelector = </code><code class="js keyword">null</code><code class="js plain">;</code></div><div class="line number9 index8 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">}</code></div><div class="line number10 index9 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">AddHandlerToUpdateButton();</code></div><div class="line number11 index10 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">}</code></div><div class="line number12 index11 alt1">&nbsp;</div><div class="line number13 index12 alt2 highlighted"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">function</code> <code class="js plain">AddHandlerToUpdateButton() {</code></div><div class="line number14 index13 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">$(</code><code class="js string">"table[class^='dxgvEditFormTable']"</code><code class="js plain">)</code></div><div class="line number15 index14 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">.find(</code><code class="js string">"a:contains('Update')"</code><code class="js plain">)</code></div><div class="line number16 index15 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">.click(</code><code class="js keyword">function</code> <code class="js plain">() {</code></div><div class="line number17 index16 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">editedRowSelector = </code><code class="js string">'#'</code> <code class="js plain">+ $(</code><code class="js string">"tr[class^='dxgvEditFormDisplayRow']"</code><code class="js plain">).attr(</code><code class="js string">'id'</code><code class="js plain">);</code></div><div class="line number18 index17 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">});</code></div><div class="line number19 index18 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">}</code></div><div class="line number20 index19 alt1"><code class="js plain">&lt;/script&gt;</code></div></div></td></tr></tbody></table></div></div>
<p>The OnGridCallback() method is used to call the jQuery highlight effect and is triggered by the ASPxGridView when a callback is finished. The AddHandlerToUpdateButton() method is used to add a click event to the ASPxGridView's 'Update' button.</p>
<p>3. Add a client-side EndCallback event to your ASPxGridView:</p>
<div><div id="highlighter_398876" class="syntaxhighlighter js"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2 highlighted">3</div><div class="line number4 index3 alt1 highlighted">4</div><div class="line number5 index4 alt2 highlighted">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="js plain">&lt;dx:ASPxGridView ID=</code><code class="js string">"ASPxGridView1"</code> <code class="js plain">runat=</code><code class="js string">"server"</code> <code class="js plain">AutoGenerateColumns=</code><code class="js string">"False"</code></div><div class="line number2 index1 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">DataSourceID=</code><code class="js string">"AccessDataSource1"</code> <code class="js plain">KeyFieldName=</code><code class="js string">"EmployeeID"</code><code class="js plain">&gt;</code></div><div class="line number3 index2 alt2 highlighted"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">&lt;ClientSideEvents EndCallback=</code><code class="js string">"function(s, e) {</code></div><div class="line number4 index3 alt1 highlighted"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js string">OnGridCallback();</code></div><div class="line number5 index4 alt2 highlighted"><code class="js string">}"</code> <code class="js plain">/&gt;</code></div><div class="line number6 index5 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">&lt;Columns&gt;</code></div><div class="line number7 index6 alt2"><code class="js plain">...</code></div></div></td></tr></tbody></table></div></div>
<p>Here's what's happening in the code above:</p>
<ol>
<li>When your end-user clicks the 'Edit' button or anytime the ASPxGridView does a callback, then at the end of the callback, it will call the OnGridCallback method. </li>
<li>If the editedRowSelector&nbsp;variable&nbsp;is not null then we'll call the jQuery highlight and set it to Null. </li>
<li>However, if the&nbsp;editedRowSelector is null then&nbsp;we'll simply called the 'AddHandlerToUpdate' method which will assign the&nbsp;editedRowSelector variable IF the grid's EditForm has displayed. </li>
<li>Then then 'AddHandlerToUpdate' method will look for the 'Update' button within a CSS class called 'dxgvEditFormTable'. If it finds it, then it'll set the 'editedRowSelector' variable. </li>
<li>Finally, when your end-user clicks 'Update', it'll go through the 1-4 steps again but this time, since the 'editedRowSelector' variable is set, it'll call the jQuery highlight effect. </li>
</ol>
<p>If that explanation is confusing then I apologize and recommend that you <a href="http://tv.devexpress.com/#JOJjQueryASP.NET1Webinar;Webinar.tag;1" target="_blank">watch the webinar video</a>. <img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://community.devexpress.com/blogs/aspnet/wlEmoticon-smile_6B56CDAF.png"></p>
<h3>Sample Project</h3>
<p>Here's the sample website I created in the webinar: <a href="http://community.devexpress.com/blogs/aspnet/Samples/YFT_ASPxGridView.zip" target="_blank"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="zip-Small" alt="zip-Small" src="http://community.devexpress.com/blogs/aspnet/zip-Small_2F57CDB3.gif" width="16" border="0" height="16"></a>&nbsp;<a href="http://community.devexpress.com/blogs/aspnet/Samples/YFT_ASPxGridView.zip">YFT_ASPxGridView.zip</a></p>
<p>Use the <a href="http://community.devexpress.com/blogs/aspnet/archive/2007/09/10/how-to-easily-convert-your-project-to-a-new-devexpress-release.aspx" target="_blank">DevExpress project converter tool</a> if you have a different version than the one I used, DXperience v2011.1.</p>
<p>&nbsp;</p>
<h3><a href="http://en.wiktionary.org/wiki/TLDR" target="_blank">TL;DR</a></h3>
<p>To recap, the yellow fade jQuery effect is an effective way to add a clean notification for end-users. <a href="http://community.devexpress.com/blogs/aspnet/Samples/YFT_ASPxGridView.zip" target="_blank">Download my sample app</a> and <a href="http://tv.devexpress.com/#JOJjQueryASP.NET1Webinar;Webinar.tag;1" target="_blank">watch the webinar video</a> to learn how.</p>
<p>&nbsp;</p>
<p>Try the above sample, then drop me a line below with your thoughts, thanks.</p>
<div class="dxperience-blog-block">
<h4>Accept No Limitations - <a href="http://www.devexpress.com/Home/Announces/2010-devproconnections-awards.xml" target="_blank">Voted Best Grid by readers</a> of DevProConnections Magazine for 4 straight years</h4>
<p>The ASPxGridView Suite is a feature-complete grid and editors library for ASP.NET. With blazing fast data loading, extensive data shaping options, and lightweight memory footprint, the ASPxGridView allows you to deliver a highly compelling and effective end-user experience with ease.</p>
<p>Go with the winner - the most decorated ASP.NET Grid Control in the market.</p>
<p>Check out all the great features now: <a href="http://devexpress.com/Products/NET/Controls/ASP/Grid/">ASP.NET Data Grid and Data Editors</a></p>
</div>
<p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>249</ID>
<Date>2011-06-30T10:52:00+04:00</Date>
<From>Michael Thuma</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>@Fitzgerald - On top of the article. I understand your position but wonder if you would see it the same way if you would need IE6 support.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>248</ID>
<Date>2011-06-30T10:14:00+04:00</Date>
<From>Alain Bismark</From>
<Subject>ASP.NET MVC & WebForms: Multi-Row Editing Gridview With Instant Updates using jQuery Ajax</Subject>
<Text><p>Great, </p>
<p>How we can integrate this XAF ??</p>
<p>Best regards</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>247</ID>
<Date>2011-06-30T07:38:00+04:00</Date>
<From>Dmitry Dobrovolsky</From>
<Subject>ASP.NET MVC & WebForms: Multi-Row Editing Gridview With Instant Updates using jQuery Ajax</Subject>
<Text><p>That's cool!</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>246</ID>
<Date>2011-06-29T18:02:00+04:00</Date>
<From>Peter Thorpe</From>
<Subject>ASP.NET MVC & WebForms: Multi-Row Editing Gridview With Instant Updates using jQuery Ajax</Subject>
<Text><p>Thanks I was looking through examples of how to do this literally yesterday. This example is much cleaner and more re-usable than the other examples.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>245</ID>
<Date>2011-06-29T14:46:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET MVC & WebForms: Multi-Row Editing Gridview With Instant Updates using jQuery Ajax</Subject>
<Text><p>Thank you Vest for making these nice examples. :)</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>244</ID>
<Date>2011-06-29T14:12:00+04:00</Date>
<From>Vest (DevExpress Support)</From>
<Subject>ASP.NET MVC & WebForms: Multi-Row Editing Gridview With Instant Updates using jQuery Ajax</Subject>
<Text><p>Wow! I became famous :-D</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>243</ID>
<Date>2011-06-29T08:45:00+04:00</Date>
<From>FITZGERALD III</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>I agree with Marco, drop IE6 support. &nbsp;If customers still need IE6 support, they can continue with 2011.1 and prior versions.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>242</ID>
<Date>2011-06-29T08:41:00+04:00</Date>
<From>FITZGERALD III</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>Other than leaving a comment here, where do we vote? &nbsp;I can't find a link to the poll.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>241</ID>
<Date>2011-06-29T08:25:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET MVC & WebForms: Multi-Row Editing Gridview With Instant Updates using jQuery Ajax</Subject>
<Text>
<p>Check out these 2 great Code Central examples that show you how to enable multi-row editing with instant updates using Ajax callbacks.</p> <p>And you can do it in both ASP.NET MVC and ASP.NET WebForms!</p> <h3>ASP.NET MVC</h3> <p>In <a href="http://devexpress.com/Support/Center/e/E3326.aspx" target="_blank">this sample</a>, we use the DevExpress MVC GridView and TextBox Extensions together with the jQuery Ajax method to instantly update changes. Using our our <a href="http://documentation.devexpress.com/#AspNet/DevExpressWebASPxEditorsScriptsASPxClientEdit_ValueChangedtopic" target="_blank">ASPxClientEdit.ValueChanged</a> event as a trigger, we call the <a href="http://api.jquery.com/jQuery.ajax/" target="_blank">jQuery.ajax</a> method to save the changes on the server side.</p> <p><a href="http://codecentral.devexpress.com/E3326/" target="_blank"><img style="display: inline;" title="Multi-row Editing GridView" alt="Multi-row Editing GridView" src="http://community.devexpress.com/blogs/aspnet/MultirowEditGridView_124834FA.gif" width="552" height="225"></a></p> <p><a href="http://tv.devexpress.com/CodeCentral1.movie" target="_blank">Code Central</a> Sample: </p> <p>ASP.NET MVC - <a href="http://devexpress.com/Support/Center/e/E3326.aspx" target="_blank"><strong>How to perform GridView instant updating using different editors in the DataItem template</strong></a></p> <h3>ASP.NET WebForms</h3> <p>In this sample, we use the DevExpress ASPxGridView and it's built-in callback support to update the changes made on the client-side instantly to the server side.</p> <p><a href="http://codecentral.devexpress.com/E2333/" target="_blank"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="ASPxGridView Multi-row editing" alt="ASPxGridView Multi-row editing" src="http://community.devexpress.com/blogs/aspnet/image_290A0D34.png" width="607" border="0" height="123"></a></p> <p><a href="http://tv.devexpress.com/CodeCentral1.movie" target="_blank">Code Central</a> Sample: </p> <p>ASP.NET WebForms - <a href="http://devexpress.com/Support/Center/p/E2333.aspx" target="_blank"><strong>How to perform ASPxGridView instant updating using different editors in the DataItem template</strong></a></p> <p>&nbsp;</p> <p>Check out the How-To samples above on Code Central. Then drop me a line below with your thoughts. Thanks!</p> <div class="dxperience-blog-block"> <h4>Build Your Best - Without Limits or Compromise</h4> <p>Try the DevExpress ASP.NET MVC Extensions online now: <a href="http://mvc.devexpress.com">http://mvc.devexpress.com</a></p> <p>Read the latest news about DevExpress ASP.NET MVC Extensions</p> <p>Download a free and fully-functional version of DXperience now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p> </div> <p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>240</ID>
<Date>2011-06-29T04:04:00+04:00</Date>
<From>Marco Fuykschot</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>Dropping support in newer versions of Devexpress should not be a bigproblem, if you need IE6 support stick to the older versions Devexpress.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>239</ID>
<Date>2011-06-28T14:30:00+04:00</Date>
<From>Michael Thuma</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>Dropping is not this simple Beside Airlines more critical apps that are part of epidemics control systems in Asia. This has to be considered wisely. A UN budget you get once ...</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>238</ID>
<Date>2011-06-28T13:18:00+04:00</Date>
<From>Firat Esmer</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>I say drop.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>237</ID>
<Date>2011-06-28T08:11:00+04:00</Date>
<From>Crono</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>I agree with Henrik.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>236</ID>
<Date>2011-06-28T06:47:00+04:00</Date>
<From>Henrik Clausen</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>I'd say drop IE6 from the 2012 release and new tools, but keep fixing bugs for some years to come.</p>
<p>Companies know what your tools can do now and have propably planned ahead using those tools and not new additions. Considering that, companies will be able to make IE6 changes using the existing tools (v11 and below).</p>
<p>I think its time to move on.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>235</ID>
<Date>2011-06-28T04:06:00+04:00</Date>
<From>Scott Blood</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>Hello,</p>
<p>Like a lot of people i work for a big corporation who are uses systems that were created many years ago that only work with the IE6 browser.</p>
<p>So for you to drop IE6 support, although i would lose the ability to use any new features, i could still continue to develop with the older version of your libraries :)</p>
<p>Thanks</p>
<p>Scott</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>234</ID>
<Date>2011-06-28T03:27:00+04:00</Date>
<From>Silviu Toderas</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>As stated by Mr. Huckle, you should address this question in separate polls (maybe for paying customers some sort of email voting form).</p>
<p>The reason for this is that, in most of the cases, although us, the developers are open minded creatures, we do not have the authority to override company's blueprint policies regarding this sort of issue. We need a stakeholder or sponsor to back us up on this and to cut through the red tape of bureaucracy (this is why I suggested separate polls for paying customers). </p>
<p>So, in this scenario, if you choose to drop the support, you will only "doom" us by limiting out usage of the new versions of the products (and probably your sales too, as the customers still stuck on IE6 will most likely not renew their licenses just for the sake of it in the hope that some company hotshot will wake up in the morning and enforce better browser support). </p>
<p>So, which misery is worse? Continuing to hack the CSS in order to make it work on IE6, or drooling over the new features you will release and know it ain't possible for them to use? :)</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>233</ID>
<Date>2011-06-28T02:45:00+04:00</Date>
<From>Preetham Reddy</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>@Michael</p>
<p>Sometimes it's not very easy to update browser. For example, I work for a major airline in USA and we are located across 500 airports around the world....</p>
<p>All these airports use systems that were developed 10 years ago and there are hundreds of such applications... It costs millions of dollars to upgrade an operating system/browser and re-write all those applications to support modern browsers...</p>
<p>For that very reason, all the applications that I write today have to support IE6 because they will be used by airport crew around the world and most of those systems are locked down with IE6. Not allowed to upgrade...</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>232</ID>
<Date>2011-06-28T00:42:00+04:00</Date>
<From>Chris Huckle</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>I vote to drop it - but as already indicated above there are those who still use it and it really depends on how important they are to DevExpress; Mehul, are you recording answers from your PAYING customers, or from the general public? &nbsp;The two goups may have totally different answers.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>231</ID>
<Date>2011-06-27T19:12:00+04:00</Date>
<From>Rinaldo Ferreira Junior</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>Personally, I vote to drop it. But, as others said, we have customers that still use IE6 and won't upgrade in the near future because they have other apps that rely on IE6. Some of them can use other browsers while others not.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>230</ID>
<Date>2011-06-27T19:08:00+04:00</Date>
<From>Nate Laff</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>YES! People can use the latest available version with IE6 support... the beauty of VMs.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>229</ID>
<Date>2011-06-27T18:59:00+04:00</Date>
<From>Peter Thorpe</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>I am all for it. I would rather see development time go into other things.</p>
<p>I think the corporate argument is pretty weak when the numbers are so low. If the companies haven't upgraded now they are unlikely to anytime soon without a push.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>228</ID>
<Date>2011-06-27T17:55:00+04:00</Date>
<From>Michael Proctor [DX-Squad]</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>@Preetham,</p>
<p>Corporations can still use Windows XP and run up to IE 8, so they don't have to spend lots of money to "stop" using IE 6.</p>
<p>Most causes are generally from corporations using old outdated software that "requires" IE6, even Telstra (Australia's main Telco) rolled out a major web based system for dealers 4 years ago using a ERP package, and that only 4 years ago required IE 6, and they still haven't upgraded it today. It is these scenarios that cause alot of issues.</p>
<p>However in alot of these case (from an IT point of view), I just setup IE to only work for that particular website using firewall rules then allow chrome or firefox to be able to browse the rest of the web.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>226</ID>
<Date>2011-06-27T17:28:00+04:00</Date>
<From>Boris Bosnjak</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>The world will be a better place without IE6. &nbsp;As long as we coddle IE6 users, the longer developers will live in misery :)</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>227</ID>
<Date>2011-06-27T17:28:00+04:00</Date>
<From>Preetham Reddy</From>
<Subject>Drop IE6 Support?</Subject>
<Text><p>H Mehul,</p>
<p>It depends on who your core customers are. If most of your customers are big corporations, then I guess you'll have to wait a little longer to drop IE6 support...</p>
<p>The sad reality is most of the big corporations, including the company I work for, still use Windows XP with IE6 as a standard browser. &nbsp;Until those corps embrace Windows 7 or Windows 8, it's hard to look away...</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>225</ID>
<Date>2011-06-27T14:30:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>Webinar: jQuery with DevExpress ASP.NET Controls</Subject>
<Text><p>Guillermo,</p>
<p>Yes! It will be available on tv.devexpress.com later today. :)</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>224</ID>
<Date>2011-06-27T14:15:00+04:00</Date>
<From>Guillermo Ochoa</From>
<Subject>Webinar: jQuery with DevExpress ASP.NET Controls</Subject>
<Text><p>Are you planning to upload the recorded session?</p>
<p>I missed it : (</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>223</ID>
<Date>2011-06-27T13:58:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>Drop IE6 Support?</Subject>
<Text>
<p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px;" title="Internet_Explorer_logo_old" alt="Internet_Explorer_logo_old" src="http://community.devexpress.com/blogs/aspnet/Internet_Explorer_logo_old_485BFBB8.png" width="48" align="right" border="0" height="48">Should DevExpress stop supporting the Internet Explorer 6 (IE6) browser with our ASP.NET products?</p> <p>Give us your answer by voting on this poll:</p> <p><a href="http://community.devexpress.com/forums/p/102364/348226.aspx#348226" target="_blank"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/aspnet/image_5D7F02A6.png" width="392" border="0" height="176"></a></p> <p>Or leave me a comment below.&nbsp;</p><p>If you prefer to contact me directly then email me at mharry [at] devexpress.com.</p> <h3>Why Drop IE6?</h3> <p>IE6 requires requires us to:</p> <ul> <li>Spend a lot of time and resources to ensure all of our ASP.NET products and themes work correctly in a browser that is no longer widely used </li> <li>Include special hacks because IE6 doesn't support things like CSS2 </li> </ul> <blockquote> <p>Developers often have to resort to strategies such as <a href="http://en.wikipedia.org/wiki/CSS_filter">CSS hacks</a>, <a href="http://en.wikipedia.org/wiki/Conditional_comments">conditional comments</a>, or other forms of <a href="http://en.wikipedia.org/wiki/Browser_sniffing">browser sniffing</a> to make their websites work in IE6. <a href="http://en.wikipedia.org/wiki/Internet_Explorer_6#Criticism" target="_blank">-Wikipedia</a></p> </blockquote> <p>And supporting IE6 limits us from moving forward to take full advantage of newer web standards and browser capabilities.</p> <h3>Outdated and Unsafe</h3> <p>IE6 has been around since 2001 and is generally considered an outdated and unsafe browser:</p> <blockquote> <p>The security advisory site <a href="http://en.wikipedia.org/wiki/Secunia">Secunia</a> reported an outstanding 24 unpatched vulnerabilities in Internet Explorer 6 as of February 9, 2010. These vulnerabilities, which include several "moderately critical" ratings, amount to 17% of the total 144 security risks listed on the website as of February 11, 2010. -<a href="http://en.wikipedia.org/wiki/Internet_Explorer_6#Security_problems" target="_blank">Wikipedia</a></p> </blockquote> <p>Worldwide, only about 11% use it:</p> <p><a href="http://www.theie6countdown.com/default.aspx" target="_blank"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="The Internet Explorer 6 Countdown" alt="The Internet Explorer 6 Countdown" src="http://community.devexpress.com/blogs/aspnet/image_7E607AC5.png" width="697" border="0" height="402"></a></p> <p>&nbsp;</p> <p>Many major sites like <a href="http://digitizor.com/2011/03/07/microsoft-kills-ie6/" target="_blank">GMail, YouTube and Facebook have dropped support for IE6</a>.</p> <p>In fact, Microsoft wants you to stop using IE6:</p> <ul> <li>Microsoft is urging you stop using IE6 on their property: <a href="http://IE6Countdown.com" target="_blank">IE6Countdown.com</a> </li> <li><a href="http://community.devexpress.com/blogs/aspnet/archive/2009/12/01/giorgio-sardo-discusses-internet-explorer.aspx" target="_blank">Giorgio Sardo, IE evangelist's plea</a> to stop using IE6 </li> <li><a href="http://www.tomshardware.com/news/Microsoft-IE6-Funeral-Flowers-Aten,9804.html" target="_blank">Microsoft Sends Flowers to IE6 Funeral</a> </li> </ul> <p>&nbsp;</p> <p>Give us your opinion. Should DevExpress <a href="http://community.devexpress.com/forums/p/102364/348226.aspx#348226" target="_blank">stop supporting IE6</a>?</p> <div class="dxperience-blog-block"> <h4>DXperience? What's That?</h4> <p>DXperience is the .NET developer's secret weapon. Get full access to a complete suite of professional components that let you instantly drop in new features, designer styles and fast performance for your applications. Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p> </div> <p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>222</ID>
<Date>2011-06-26T20:12:00+04:00</Date>
<From>Rachel Reese (DevExpress)</From>
<Subject>Winforms RichEdit - Document Protection (available now in v2010, volume 2)</Subject>
<Text><p>Frieder - It's not possible to unlock the document without having the password. Thanks. </p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>221</ID>
<Date>2011-06-26T15:09:00+04:00</Date>
<From>Frieder Schuschnig</From>
<Subject>Winforms RichEdit - Document Protection (available now in v2010, volume 2)</Subject>
<Text><p>If a user will protect a document, is it possible to unlock that ocument without having the password ? How can I do that in c# ?</p>
<p>Thanks</p>
<p>Frieder</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>220</ID>
<Date>2011-06-23T17:01:00+04:00</Date>
<From>Mark Miller (DevExpress)</From>
<Subject>Advanced CodeRush Plug-ins: Converting an Object Initializer into a Constructor </Subject>
<Text><p>Tom, your feedback about the less discoverable aspects about the DXCore has been heard and we're already talking about how to improve this in 11.2. Thanks for your support.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>219</ID>
<Date>2011-06-23T08:58:00+04:00</Date>
<From>SimonMartin</From>
<Subject>Multitasking (Message from the CTO, newsletter 49)</Subject>
<Text><p>A great idea!</p>
<p>Do you have any recommendations for software to provide 50 min reminders? Leaving Outlook running would seem counterproductive, ideally just something that's in the system tray and pops up at a given time e.g. 9:50, 10:50, 11:50 etc</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>218</ID>
<Date>2011-06-22T13:51:00+04:00</Date>
<From>Michael Thuma</From>
<Subject>Multitasking (Message from the CTO, newsletter 49)</Subject>
<Text><p>Cool. Makes sense. </p>
<p>Lot better then GTD, because GTD is far from being funny when one is not the boss:). GTD has a problem in hierarchical organizations at the leaves.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>217</ID>
<Date>2011-06-22T13:46:00+04:00</Date>
<From>Tom Allard</From>
<Subject>Advanced CodeRush Plug-ins: Converting an Object Initializer into a Constructor </Subject>
<Text><p>Allready learned a lot. However i think there is a lot of stuff you need to know about the api before you can make great plugins. Maybe it is a good idea to, as long as not everything is in the eventargs, to make a small api reference for common things you will need to do a lot when making refactorings/codeproviders. (Like when to use ParserServices or that you need to use Resolve to get to the type of an initializer member argument). Also integration of dxcorecommunityplugins (like VS extension manager) in refactor/coderush would be awesome. </p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>216</ID>
<Date>2011-06-22T09:16:00+04:00</Date>
<From>Mark Miller (DevExpress)</From>
<Subject>Advanced CodeRush Plug-ins: Converting an Object Initializer into a Constructor </Subject>
<Text>
<p>Today Rory Becker and I presented an Advanced CodeRush Plug-ins session, showing how to create CodeProviders and RefactoringProviders. These providers show up on the CodeRush/Refactor menu, like this:</p> <p><a href="http://community.devexpress.com/blogs/markmiller/RefactoringMenu_26AFD837.png"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="RefactoringMenu" alt="RefactoringMenu" src="http://community.devexpress.com/blogs/markmiller/RefactoringMenu_thumb_37B4061A.png" width="646" border="0" height="294"></a></p> <p>The session included several moments where we tasted sweet success, and at least one tough coding segment where we were pushing through some challenging code.</p> <p>The new feature converts code like this:</p> <span style="font: 18px Consolas;"><span><span><span style="color: rgb(43, 145, 175);">&nbsp; Box&nbsp;</span></span></span></span><span class="Apple-style-span" style="font-family: Consolas; font-size: 18px;">box&nbsp;=&nbsp;</span><span style="font: 18px Consolas;"><span><span><span style="color: rgb(0, 0, 255);">new </span><span style="color: rgb(43, 145, 175);">Box</span><span>(</span></span></span></span><span style="font: 18px Consolas;"><span style="font: 18px Consolas;"><span style="font: 18px Consolas;">) { Height = 33, Width = 44, Depth = 22 };</span></span></span> <p>into this:</p> <span style="color: rgb(43, 145, 175);"><span style="color: rgb(43, 145, 175);"><span style="color: rgb(43, 145, 175);"> </span></span></span><p><span class="Apple-style-span" style="font-size: 18px; font-family: Consolas; color: rgb(43, 145, 175);">&nbsp; Box&nbsp;</span><span style="font: 18px Consolas;"><span style="color: rgb(0, 0, 0);">box =</span></span><span class="Apple-style-span" style="font-family: Consolas; font-size: 18px;">&nbsp;</span><span><span><span><span style="color: rgb(0, 0, 255);">new&nbsp;</span><span style="color: rgb(43, 145, 175);">Box</span></span></span></span><span style="font: 18px Consolas;"><span style="font: 18px Consolas;"><span style="color: rgb(0, 0, 0);">(33, 44, 22);</span></span></span></p><p>and creates a constructor if needed.</p> <p>At the end of the two-hour session, we were left with a refactoring that worked, but a CodeProvider that needed more effort. The CodeProvider was challenging because it needed to modify code in two places (it is adding a constructor and replacing the object initializer with a call to new constructor), potentially in two files.</p> <p>Here’s an overview of the points we learned in the session:</p><p>1. The <a href="http://www.devexpress.com/Support/Center/kb/p/K18031.aspx" target="_blank">Expressions Lab</a>&nbsp;can reveal many of the hidden details behind the source code you want to analyze or generate.</p><p>2.&nbsp;The <strong>ObjectCreationExpression </strong>class represents a call to a constructor.</p><p>3. <strong>ObjectCreationExpression </strong>elements have three interesting properties:</p><p></p><ul> <li><strong>Arguments </strong>– the parameters to the constructor call, if any</li> <li><strong>ObjectType </strong>– a reference to the type being constructed</li> <li><strong>ObjectInitializer </strong>– an ObjectInitializerExpression (if the constructor call includes an initializer).</li></ul>4. <strong>ObjectInitializerExpression </strong>has one interesting property:<br><ul> </ul><ul> <li><strong>Initializers </strong>– a collection of MemberInitializerExpressions</li></ul>5. <strong>MemberInitializerExpression </strong>has two interesting properties:<br><ul> <li><strong>Name </strong>– the property name being assigned.</li> <li><strong>Value </strong>– the value assigned to the property in the initializer expression.</li> </ul>6. <strong>MemberInitializerExpression </strong>also has an interesting method, <strong>Resolve</strong>, which allows us to determine the type of the initializer argument. <p></p><p>7. We can use the <strong>FileChange </strong>object to queue up changes to multiple files. </p><p>At the end of the webinar, we encountered an issue where the CodeProvider wouldn’t generate any code. The problem was due to this line of code which set the source file <strong>Path </strong>property of a <strong>FileChange </strong>instance to the folder holding the text document (but not the actual file name): <br> <br><span style="font: 18px Consolas;"><span style="font: 18px Consolas;">&nbsp; newConstructor.</span></span><span class="Apple-style-span" style="font-size: 18px; font-family: Consolas;">Path =&nbsp;<span style="color: rgb(43, 145, 175);"><span style="color: rgb(43, 145, 175);"><span style="color: rgb(43, 145, 175);">CodeRush</span></span></span><span><span><span style="color: rgb(0, 0, 0);">.Documents.ActiveTextDocument</span></span></span></span><span style="font: 18px Consolas;"><span style="font: 18px Consolas;">.Path;</span></span> <br> <br>it should have been this: <br> <br><span style="font: 18px Consolas;"><span style="font: 18px Consolas;">&nbsp; newConstructor.Path = <span style="color: rgb(43, 145, 175);"><span style="color: rgb(43, 145, 175);"><span style="color: rgb(43, 145, 175);">CodeRush</span></span></span><span style="font: 18px Consolas;"><span style="font: 18px Consolas;"><span style="color: rgb(0, 0, 0);">.Documents.ActiveTextDocument.FileNode.Name</span></span></span>;</span></span><span style="font: 18px Consolas;"><span style="font: 18px Consolas;"></span> </span></p><p>Correcting the two places where we set FileChange’s Path property enabled the plug-in to generate code correctly. We’ll record a part 2 to this webinar where we’ll see this fix and wrap up all remaining issues:</p> <ol> <li>Fix the FileChange code generation.</li> <li>Add code that transfers parameters to the properties.</li> <li>Declare parameters in the developer’s preferred style.</li> <li>Test, and handle any new issues found.</li> </ol>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>215</ID>
<Date>2011-06-22T06:20:00+04:00</Date>
<From>Pietro Allegretti</From>
<Subject>Multitasking (Message from the CTO, newsletter 49)</Subject>
<Text><p>Let me thank you Julian. You make me discover Pomodoro Techinque.. </p>
<p>I'll spend my first one or two (I hope) pomodoro creating the pomodoro timer software using DX Gauges..</p>
<p>maybe an idea for the Demo Center..</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>214</ID>
<Date>2011-06-21T15:33:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET - How To Show A Popup Warning Before Session Timeout</Subject>
<Text><p>Yves,</p>
<p>Yes, you can put the usercontrol on the master page. :)</p>
<p>Thanks.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>213</ID>
<Date>2011-06-21T12:09:00+04:00</Date>
<From>Miro Nagy</From>
<Subject>Multitasking (Message from the CTO, newsletter 49)</Subject>
<Text><p>Practice makes perfect. &nbsp;</p>
<p>I don't think I would be able to properly work without multitasking on multiple things at once.</p>
<p>Including reading the above post and posting my reply.</p>
<p>Cheers'</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>212</ID>
<Date>2011-06-21T08:47:00+04:00</Date>
<From>Yves Lessard</From>
<Subject>ASP.NET - How To Show A Popup Warning Before Session Timeout</Subject>
<Text><p>In a Master Page project ... would it be wyse to instantiate the TimeoutControl.ascx in the master page ?</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>211</ID>
<Date>2011-06-21T04:41:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET - How To Show A Popup Warning Before Session Timeout</Subject>
<Text><p>Jean,</p>
<p>The approach from the example will prolong the session for all browser windows, but other windows cannot know about it and will be redirected to the timeout page, so the user will have to use the “Back” button to continue their work.</p>
<p>Unfortunately, there isn't a simple solution here. To solve it, there should be some kind of opened window tracking and cross-window communication. And this cannot be simple and universal, sorry.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>210</ID>
<Date>2011-06-21T03:58:00+04:00</Date>
<From>Jean Pierre RAVEZ</From>
<Subject>ASP.NET - How To Show A Popup Warning Before Session Timeout</Subject>
<Text><p>This solution assumes that each user will use only one client window at a time on the web application , no ? Do you think it's possible to implement a "simple" solution that would work with several windows opened at the same time (sharing the same session) by a single user ? Thanks !</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>208</ID>
<Date>2011-06-20T19:33:00+04:00</Date>
<From>Jason</From>
<Subject>Multitasking (Message from the CTO, newsletter 49)</Subject>
<Text><p>Async tasking - excellent! Perhaps this is better for the way the male mind works anyway.</p>
<p>Now... how to train my head - I am so 'used' to the idea of multitasking that this will be a very hard habit to beat.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>207</ID>
<Date>2011-06-20T16:37:00+04:00</Date>
<From>James S K Makumbi</From>
<Subject>Multitasking (Message from the CTO, newsletter 49)</Subject>
<Text><p>"close down Outlook, your IM app, Tweetdeck, anything that “toasts” you or that intrudes on your work" Pomodoro.</p>
<p>Timely advice sir.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>209</ID>
<Date>2011-06-20T12:00:00+04:00</Date>
<From>Julian Bucknall (DevExpress)</From>
<Subject>Multitasking (Message from the CTO, newsletter 49)</Subject>
<Text> <p>For one reason or another, Jeff and I ran out of pre-videoed messages this time, so this one is “text only”.</p> <blockquote> <p><strong>Multitasking</strong></p> <p>It’s been such a long time that we’ve been using PCs that multitask well that we don’t even think about it any more. It’s still magic in a sense: the OS will halt a process, save its state perfectly, swap in another process, restore its state, and kick it off. A couple of milliseconds later, another process is running as if it had never been stopped. 100 processes in my Task Manager? Yawn, shhh, pass the popcorn, I’m watching a movie on my PC.</p> <p><span style="position: relative; padding: 0px; line-height: 15px; margin: 0px 10px; width: 268px; display: block; float: right;" id="wylio-flickr-image-3535379567"><img style="border-style: none; padding: 0px; margin: 0px;" title="Microwave Timer - photo by: Pascal, Source: Flickr, found with Wylio.com" alt="Microwave Timer" src="http://img.wylio.com/flickr/544/268/3535379567" width="268" height="214"><span style="padding: 0px; font-style: italic; margin: 0px; width: 100%; background: none repeat scroll 0% 0% rgb(255, 255, 255); float: left; clear: both; font-size: 11px; font-family: arial,sans-serif; color: rgb(170, 170, 170);" id="wylio-flickr-credits-3535379567" class="wylio-credits"><span style="padding: 2px; margin: 0px;" class="photoby"><span style="margin: 0px; display: block; float: left;">photo © 2009 <a style="padding: 0px; margin: 0px; color: rgb(170, 170, 170); text-decoration: underline;" title="click to visit the Flickr profile page for Pascal" href="http://www.flickr.com/people/pasukaru76/" target="_blank">Pascal</a> | <a style="padding: 0px; margin: 0px; color: rgb(170, 170, 170); text-decoration: underline;" title="get more information about the photo 'Microwave Timer'" href="http://www.flickr.com/photos/38451115@N04/3535379567" target="_blank">more info </a></span><span style="display: block; float: right; margin-left: 5px;"><strong style="margin: 0px;">(via: <a style="padding: 0px; margin: 0px; color: rgb(170, 170, 170); text-decoration: underline;" title="free pictures" href="http://www.wylio.com" target="_blank">Wylio</a>)</strong></span></span></span></span>But there is one place where multitasking is not so smooth and automatic and causes problems every time it happens: our own concentration. Just like our PCs, every time we have to multitask (our boss phones us as we’re trying ever so hard to debug something intricate) we have to save our state somehow. If you’re anything like me, it’s not a case of “oh, hang on, let me write down where I was, what theory I was testing, the results so far that have validated my theory”, it’s more a case of hoping your memory can remember all that and “yeah, I can pop round to your office; this’ll wait.” Of course there are other interrupts we must process: the appointment warning from Outlook about <em>that</em> meeting, the “toast” window popping up telling us that we have a new email or that a colleague has logged into the IM app.</p> <p>Our state-saving expertise is woeful. Which is why, when we have to context-switch, it takes us so long to get back up to speed. I think the generally accepted and quoted figure is that it takes us 15 minutes to get back into the groove. So what can we do to reduce context switches and make our multitasking run smoother? Obviously, there’s not a lot we can do about the “boss interrupts”, but we can mitigate them somewhat.</p> <p>The obvious one that everyone recommends is to turn off all interrupts: close down Outlook, your IM app, Tweetdeck, anything that “toasts” you or that intrudes on your work. Sure, we do that anyway.</p> <p>An equally important one is this: subdivide and break up your work into, say, 50 minute slots. This has several benefits: it allows you to attack various tasks throughout the day (we’re lucky indeed if we only have one task to do: most of us have meetings to attend, customer emails to reply to, code to design and write, presentations to give, and so on, tasks upon tasks) and give a feeling of progress in many of them, reducing that feeling of being overwhelmed. Timeboxing yourself like this also gives you a break at the end of the slot to reflect on what you’ve done, assess your progress, save some state by writing down some conclusions, etc. You’re never doing so much that you have several hours of progress to remember on an interruption. This is the basis of the <em><a href="http://www.pomodorotechnique.com/">Pomodoro Technique</a>.</em></p> <p>Take it from me: stop multitasking. Do some async processing, not parallel.</p> </blockquote> <p>Hmm. Now I’ve written it and published it, it sounds like it comes from the heart. Learn from me!</p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>206</ID>
<Date>2011-06-20T02:21:00+04:00</Date>
<From>Mike (DevExpress Support)</From>
<Subject>ASP.NET MVC - How To Embed MVC GridView Extension In To Tab Strip Extension</Subject>
<Text><p>Hello Alexey,</p>
<p>This issue is caused by the fact that any expression in the PageControl's definition is not valid, so that the entire PageControl's definition (lambda expression) cannot be recognized by the View Engine.</p>
<p>Please refer to the original post ([url=<a rel="nofollow" target="_new" href="http://community.devexpress.com/forums/p/101890/346904.aspx#346904">community.devexpress.com/.../346904.aspx</a>]<a rel="nofollow" target="_new" href="http://community.devexpress.com/forums/p/101890/346904.aspx#346904">community.devexpress.com/.../346904.aspx</a>[/url]) where I published two samples, illustrating how to accomplish this task within both ASPx and Razor View Engines.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>205</ID>
<Date>2011-06-18T15:32:00+04:00</Date>
<From>Daniel Rail</From>
<Subject>Kinect SDK Out!</Subject>
<Text><p>A group of doctors in Toronto, Ontario, Canada is already using it in the operating room. &nbsp;You can read more about it here: <a rel="nofollow" target="_new" href="http://chealth.canoe.ca/channel_health_news_details.asp?news_id=31715&amp;news_channel_id=12&amp;channel_id=12">chealth.canoe.ca/channel_health_news_details.asp</a></p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>204</ID>
<Date>2011-06-17T08:47:00+04:00</Date>
<From>Peter Thorpe</From>
<Subject>Kinect SDK Out!</Subject>
<Text><p>I gave it a go I can see some really cool things coming out for this once developers have had some time with the official SDK. The audio API is quite impressive from the looks of it as well.</p>
<p>What seems to be missing at the moment though is close up face tracking. I thought they would add some features to map peoples facial expressions and perhaps which way they are looking rather than the far away skeleton tracking. Same for close up hand tracking, you currently need the majority of your body in view.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>203</ID>
<Date>2011-06-17T08:27:00+04:00</Date>
<From>Jon E</From>
<Subject>Kinect SDK Out!</Subject>
<Text><p>And given how cheap the Kinect sensor is it's a positive bargain! </p>
<p>Now MS need to release a more rugged business oriented version of the Kinect and they'll be laughing.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>202</ID>
<Date>2011-06-16T14:03:00+04:00</Date>
<From>Seth Juarez (DevExpress)</From>
<Subject>Kinect SDK Out!</Subject>
<Text> <p>Thought I would check in and tell you about my crazy 24 hours coding on the new Kinect API. I flew in a couple of days ago here to lovely Redmond, WA in order to see if we could come up with something super cool. We decided to continue working on improving our gesture recognition:</p> <p><a href="http://community.devexpress.com/blogs/seth/kinectMode2_7AAA2912.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="kinectMode2" alt="kinectMode2" src="http://community.devexpress.com/blogs/seth/kinectMode2_thumb_64E040B5.png" width="600" border="0" height="305"></a></p> <p>Here you can see the fabulous skeletal rendering afforded by the Kinect SDK. In addition to the skeleton (of which there are countless joints), the SDK provides depth data to the millimeter.</p> <p><a href="http://research.microsoft.com/kinectsdk"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Kinect SDK Install" alt="Kinect SDK Install" src="http://community.devexpress.com/blogs/seth/install_78F95D3E.png" width="509" border="0" height="398"></a></p> <p>Installation was truly super easy. I installed the x64 package and was up and running fairly quickly. I ran into issues with the OpenNI drivers necessitating a manual removal of the drivers from the device management.</p> <p>The only challenge here is that I really got no sleep! </p> <p>Now the important question: What does this have to do with reporting?</p> <p>Everything! Here is a device which can literally track the presence of up to 6 people! Imagine the ramifications of such a device! Imagine the data that could be gathered for a particular room in a building. I can almost see the crisp charts, the nice pivot aggregates, and the lovely tables of resource utilization data that this could produce! The main idea behind reporting is allowing your data to tell your story. </p> <p>What if you were a physical therapist assisting a recovering patient. Imagine the kind of report one could product over a period of time! In essence, reporting exists to discover the hidden meaning of your raw data.</p> <p>What will you find today?</p> <p>As always, if there are any comments and/or questions, feel free to get a hold of me!</p> <p>Seth Juarez <br>Email: <a href="mailto:sethj@devexpress.com">sethj@devexpress.com</a> <br>Twitter: <a href="http://twitter.com/sethjuarez">@SethJuarez</a> </p> <div class="dxperience-blog-block"> <h4>Want The Best Reporting Tool Ever?</h4> <p>Get The No-Compromise Reporting Tool for WinForms, ASP.NET, Silverlight and WPF! - Native integration with DevExpress WinForms and ASP.NET Controls, unequalled design-time productivity, industrial-grade features. Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p> </div> <p>Let us know what you think of our Reporting Suite by rating it in the <a href="http://dxpr.es/lUzz9P">VS Gallery</a>!</p> <p><a href="http://www.twitter.com/SethJuarez"><img alt="Follow SethJuarez on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>201</ID>
<Date>2011-06-16T04:56:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>ASP.NET - How To Show A Popup Warning Before Session Timeout</Subject>
<Text><p>As Mehul mentioned above, it is not integrated in XAF. Furthermore, in XAF we have our own mechanism that automatically prolongs the session. If you are interested to learn more about it, please notice the SessionKeepAliveReconnect.aspx page in the root folder of your website. And if you have access to XAF sources, check out the SessionKeepAliveReconnect method in the CommonFunctions.js file as well as the use of the SessionKeepAliveControl class.</p>
<p>However, you can implement the solution demonstrated in this blog in XAF Web applications because XAF produces regular ASP.NET applications where the same customization techniques can be used.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>200</ID>
<Date>2011-06-15T16:31:00+04:00</Date>
<From>Brendon Muck [DX Squad]</From>
<Subject>ASP.NET - How To Show A Popup Warning Before Session Timeout</Subject>
<Text><p>Very helpful. Thanks, Mehul!</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>199</ID>
<Date>2011-06-15T16:30:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET - How To Show A Popup Warning Before Session Timeout</Subject>
<Text><p>Jens,</p>
<p>This is a code central sample so I don't believe it's integrated directly into XAF. I've asked the XAF team to look into it for you and they'll comment soon about it. </p>
<p>Thanks.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>198</ID>
<Date>2011-06-15T16:11:00+04:00</Date>
<From>Jens Havelberg</From>
<Subject>ASP.NET - How To Show A Popup Warning Before Session Timeout</Subject>
<Text><p>in XAF integrated?</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>197</ID>
<Date>2011-06-15T15:15:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>Webinar: jQuery with DevExpress ASP.NET Controls</Subject>
<Text>
<p>Register now for this useful webinar that shows you examples of using the jQuery library with <a href="http://devexpress.com/asp" target="_blank">DevExpress ASP.NET</a> Controls:</p> <p>&nbsp;<a href="https://www3.gotomeeting.com/register/628374806" target="_blank"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="jQuery_logo_bw" alt="jQuery_logo_bw" src="http://community.devexpress.com/blogs/aspnet/jQuery_logo_bw_19E61CE3.png" width="420" border="0" height="103"></a>&nbsp;</p> <p><a href="https://www3.gotomeeting.com/register/628374806" target="_blank"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/aspnet/image_79031BC4.png" width="175" align="right" border="0" height="245"></a></p> <p><strong>Title:</strong> Julian on Java?Script: using jQuery with DevExpress <a href="http://asp.net/">ASP.NET</a> controls</p> <p><strong>Date:</strong> Monday, June 27<sup>th</sup>, 2011 – 10:00 AM</p> <p><strong>URL:</strong> <a href="https://www3.gotomeeting.com/register/628374806">https://www3.gotomeeting.com/register/628374806</a></p> <p><strong>Description:</strong></p> <p>jQuery is a great library for client-side DOM access and element manipulation. DXperience ASP.NET is a great library for producing rich Internet applications. Join Julian as he delves into the intersection between them and shows how you can use jQuery to make your DevExpress ASP.NET applications even richer. </p> <p><strong>Prerequisites:</strong> include experience with DXperience ASP.NET and some knowledge of jQuery’s functionality. </p> <p><strong>Presenters:</strong> Julian Bucknall &amp; Mehul Harry</p> <p>Julian and I will be co-presenting this webinar to bring you some interesting examples of using the jQuery library with DevExpress ASP.NET controls.</p> <p>Thanks! And I look forward to seeing you on the webinar online.</p> <div class="dxperience-blog-block"> <h4>Build Your Best - Without Limits or Compromise</h4> <p>Try the DevExpress ASP.NET MVC Extensions online now: <a href="http://mvc.devexpress.com">http://mvc.devexpress.com</a></p> <p>Read the latest news about DevExpress ASP.NET MVC Extensions</p> <p>Download a free and fully-functional version of DXperience now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p> </div> <p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>196</ID>
<Date>2011-06-15T12:45:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET - How To Show A Popup Warning Before Session Timeout</Subject>
<Text>
<p>Check out this useful Code Central ASP.NET sample that shows you how to use the <a href="http://devexpress.com/asp" target="_blank">DevExpress ASP.NET</a> PopupControl to: </p> <ol> <li>Display a warning message before a user's session times out and </li> <li>Allow the end-user to continue the session or log them out automatically </li> </ol> <p><a href="http://www.devexpress.com/Support/Center/e/E3302.aspx" target="_blank"><img style="display: inline;" title="E3302" alt="E3302" src="http://community.devexpress.com/blogs/aspnet/E3302_0BF6AC01.gif" width="640" height="360"></a></p> <h3>Session Timeout</h3> <p><a href="http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.timeout.aspx" target="_blank">Session Timeout</a> is a property that you can set in your web.config file to control when a user session should expire. </p> <p>Unfortunately, your end-users don't know when their session will expire unless you notify them somehow.</p> <h3>Popup Warning</h3> <p>One one of the best way to notify them is using a popup warning dialog. You may have seen these types of popups on your bank's website. </p> <p>Say you're checking your bank balance online and need to answer a phone call elsewhere. You've just left the browser open at your bank account details which creates a potential security issue. To put it mildly.</p> <p>If the ASP.NET Session timeout has been set then it will expire the session but it may not give any useful hints to the end-user. Most banking websites will display a client-side popup dialog to warn and ask the end-users if they would like to continue the session.</p> <p>The popup could have a one minute timer and an OK button. If the end-user is still there and wants to continue the session then they'll click the 'Ok' button. But if the timer on the popup runs out then they'll automatically be logged out.</p> <h3>ASPxPopupControl To The Rescue</h3> <p>Now you can have this wonderful feature in your websites using the ASPxPopupControl! We've put together a <a href="http://www.devexpress.com/Support/Center/e/E3302.aspx" target="_blank">Code Central sample</a> that contains a ready-to-use UserControl that has our ASPxPopupControl embedded within it:</p> <p><a href="http://www.devexpress.com/Support/Center/e/E3302.aspx" target="_blank">How to control state when the Session is being expired and prolong it on demand</a></p> <p align="left">To learn how Code Central works, <a href="http://community.devexpress.com/blogs/aspnet/archive/2008/07/30/codecentral-source-code-to-search-download-run-enterprise-cheat.aspx" target="_blank">watch this short video</a>. </p> <p align="left">Note: You can't run this demo online, even though it's an ASP.NET project, because it uses the session state. However, you can easily download and run it locally.</p> <h3 align="left">Break It Down</h3> <p align="left">The slick <a href="http://www.devexpress.com/Support/Center/e/E3302.aspx" target="_blank">Code Central sample</a> contains 4 files:</p> <ul> <li>TimeoutControl.ascx - User Control that contains the Popup warning dialog </li> <li>TimeOutPage.aspx - Simple page to redirect to when session has timed out </li> <li>Default.aspx - Default page that calls the UserControl </li> <li>Default.aspx.cs - Code behind page that sets the TimeOutUrl to point to TimeOutPage.aspx </li> </ul> <p>All the Java Script magic happens in the Timeoutcontrol.ascx UserControl:</p> <div><div id="highlighter_85754" class="syntaxhighlighter js"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div><div class="line number22 index21 alt1">22</div><div class="line number23 index22 alt2">23</div><div class="line number24 index23 alt1">24</div><div class="line number25 index24 alt2">25</div><div class="line number26 index25 alt1">26</div><div class="line number27 index26 alt2">27</div><div class="line number28 index27 alt1">28</div><div class="line number29 index28 alt2">29</div><div class="line number30 index29 alt1">30</div><div class="line number31 index30 alt2">31</div><div class="line number32 index31 alt1">32</div><div class="line number33 index32 alt2">33</div><div class="line number34 index33 alt1">34</div><div class="line number35 index34 alt2">35</div><div class="line number36 index35 alt1">36</div><div class="line number37 index36 alt2">37</div><div class="line number38 index37 alt1">38</div><div class="line number39 index38 alt2">39</div><div class="line number40 index39 alt1">40</div><div class="line number41 index40 alt2">41</div><div class="line number42 index41 alt1">42</div><div class="line number43 index42 alt2">43</div><div class="line number44 index43 alt1">44</div><div class="line number45 index44 alt2">45</div><div class="line number46 index45 alt1">46</div><div class="line number47 index46 alt2">47</div><div class="line number48 index47 alt1">48</div><div class="line number49 index48 alt2">49</div><div class="line number50 index49 alt1">50</div><div class="line number51 index50 alt2">51</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="js plain">&lt;script type=</code><code class="js string">"text/javascript"</code><code class="js plain">&gt;</code></div><div class="line number2 index1 alt1">&nbsp;</div><div class="line number3 index2 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">window.SessionTimeout = (</code><code class="js keyword">function</code><code class="js plain">() {</code></div><div class="line number4 index3 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">var</code> <code class="js plain">_timeLeft, _popupTimer, _countDownTimer;</code></div><div class="line number5 index4 alt2">&nbsp;</div><div class="line number6 index5 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">var</code> <code class="js plain">stopTimers = </code><code class="js keyword">function</code><code class="js plain">() {</code></div><div class="line number7 index6 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">window.clearTimeout(_popupTimer);</code></div><div class="line number8 index7 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">window.clearTimeout(_countDownTimer);</code></div><div class="line number9 index8 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">};</code></div><div class="line number10 index9 alt1">&nbsp;</div><div class="line number11 index10 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">var</code> <code class="js plain">updateCountDown = </code><code class="js keyword">function</code><code class="js plain">() {</code></div><div class="line number12 index11 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">var</code> <code class="js plain">min = Math.floor(_timeLeft / 60);</code></div><div class="line number13 index12 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">var</code> <code class="js plain">sec = _timeLeft % 60;</code></div><div class="line number14 index13 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">if</code><code class="js plain">(sec &lt; 10)</code></div><div class="line number15 index14 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">sec = </code><code class="js string">"0"</code> <code class="js plain">+ sec;</code></div><div class="line number16 index15 alt1">&nbsp;</div><div class="line number17 index16 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">document.getElementById(</code><code class="js string">"CountDownHolder"</code><code class="js plain">).innerHTML = min + </code><code class="js string">":"</code> <code class="js plain">+ sec;</code></div><div class="line number18 index17 alt1">&nbsp;</div><div class="line number19 index18 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">if</code><code class="js plain">(_timeLeft &gt; 0) {</code></div><div class="line number20 index19 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">_timeLeft--;</code></div><div class="line number21 index20 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">_countDownTimer = window.setTimeout(updateCountDown, 1000);</code></div><div class="line number22 index21 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">} </code><code class="js keyword">else</code>&nbsp; <code class="js plain">{</code></div><div class="line number23 index22 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">document.location = &lt;%= QuotedTimeOutUrl %&gt;;</code></div><div class="line number24 index23 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code></div><div class="line number25 index24 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">};</code></div><div class="line number26 index25 alt1">&nbsp;</div><div class="line number27 index26 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">var</code> <code class="js plain">showPopup = </code><code class="js keyword">function</code><code class="js plain">() {</code></div><div class="line number28 index27 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">_timeLeft = 60;</code></div><div class="line number29 index28 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">updateCountDown();</code></div><div class="line number30 index29 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">ClientTimeoutPopup.Show();</code></div><div class="line number31 index30 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">};</code></div><div class="line number32 index31 alt1">&nbsp;</div><div class="line number33 index32 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">var</code> <code class="js plain">schedulePopup = </code><code class="js keyword">function</code><code class="js plain">() {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code></div><div class="line number34 index33 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">stopTimers();</code></div><div class="line number35 index34 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">_popupTimer = window.setTimeout(showPopup, &lt;%= PopupShowDelay %&gt;);</code></div><div class="line number36 index35 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">};</code></div><div class="line number37 index36 alt2">&nbsp;</div><div class="line number38 index37 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">var</code> <code class="js plain">sendKeepAlive = </code><code class="js keyword">function</code><code class="js plain">() {</code></div><div class="line number39 index38 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">stopTimers();</code></div><div class="line number40 index39 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">ClientTimeoutPopup.Hide();</code></div><div class="line number41 index40 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">ClientKeepAliveHelper.PerformCallback();</code></div><div class="line number42 index41 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">};</code></div><div class="line number43 index42 alt2">&nbsp;</div><div class="line number44 index43 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js keyword">return</code> <code class="js plain">{</code></div><div class="line number45 index44 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">schedulePopup: schedulePopup,</code></div><div class="line number46 index45 alt1"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">sendKeepAlive: sendKeepAlive</code></div><div class="line number47 index46 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">};</code></div><div class="line number48 index47 alt1">&nbsp;</div><div class="line number49 index48 alt2"><code class="js spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="js plain">})();&nbsp;&nbsp;&nbsp; </code></div><div class="line number50 index49 alt1">&nbsp;</div><div class="line number51 index50 alt2"><code class="js plain">&lt;/script&gt;</code></div></div></td></tr></tbody></table></div></div>
<p>Download <a href="http://www.devexpress.com/Support/Center/e/E3302.aspx" target="_blank">the sample</a> and integrate into your websites to give your end-users a friendly reminder that their session is expiring soon and would they like to keep it running. <img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://community.devexpress.com/blogs/aspnet/wlEmoticon-smile_451019B4.png"></p>
<p>Thanks!</p>
<div class="dxperience-blog-block">
<h4>DXperience? What's That?</h4>
<p>DXperience is the .NET developer's secret weapon. Get full access to a complete suite of professional components that let you instantly drop in new features, designer styles and fast performance for your applications. Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p>
</div>
<p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>194</ID>
<Date>2011-06-15T08:17:00+04:00</Date>
<From>Alexey X</From>
<Subject>ASP.NET MVC - How To Embed MVC GridView Extension In To Tab Strip Extension</Subject>
<Text><p>Hello!</p>
<p>I'm getting such exception at aspx-file:</p>
<p>c:\Documents and Settings\MoiseevAI\My Documents\Dropbox\ISG\CS\trunk\MVCDemos\Views\Request\CallbacksPartial.ascx(4): error CS1660: Cannot convert lambda expression to type 'DevExpress.Web.Mvc.PageControlSettings' because it is not a delegate type</p>
<p>Could you please explain me - what I need to read, to understand?</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>195</ID>
<Date>2011-06-15T08:00:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET MVC - How To Embed MVC GridView Extension In To Tab Strip Extension</Subject>
<Text>
<p>Check out this quick little how-to guide for embedding the <a href="http://mvc.devexpress.com/GridView/InlineEditingWithTemplate" target="_blank">DevExpress MVC GridView</a> into the <a href="http://mvc.devexpress.com/TabControl/Features" target="_blank">Tab Strip Extension</a>.</p> <h3>Background</h3> <p>Alexey M. asked the following question on our forums:</p> <blockquote> <p><strong><a href="http://community.devexpress.com/forums/p/101890/346904.aspx#346904" target="_blank">MVC Tabs Demo and GridView components</a></strong></p> <p>By Alexey X in MVC Extensions</p> <p>Hello! I'm using demo with AJAX tabbed page. I want to place a data grid into one of the ajax-tab. How I can do it? </p> </blockquote> <h3>Solution</h3> <p>Our Tab Strip extension has a <a href="http://mvc.devexpress.com/TabControl/Callbacks" target="_blank">slick 'AJAX' demo</a> that shows off it's callback capabilities when clicking on the different tabs:</p> <p><a href="http://mvc.devexpress.com/TabControl/Callbacks" target="_blank" title="DevExpress MVC Tab Strip Extension - AJAX Demo"><img style="background-image: none; border-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/aspnet/image_7C73FB91.png" width="441" border="0" height="364"></a></p> <p>To embed our MVC GridView extension into the Tab Strip extension, follow these steps:</p> <p>1. Create a View called TabControl.aspx and add the following code:</p> <div><div id="highlighter_962438" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">&lt;% Html.RenderPartial("TabControlPartial", Model); %&gt;</code></div></div></td></tr></tbody></table></div></div>
<p>2. Create the 'TabControlPartial.ascx' view and add the following code for the tab strip extension:</p>
<div><div id="highlighter_800747" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">&lt;%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %&gt;</code></div><div class="line number2 index1 alt1">&nbsp;</div><div class="line number3 index2 alt2"><code class="xml plain">&lt;% </code></div><div class="line number4 index3 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">Html.DevExpress().PageControl(settings =&gt; {</code></div><div class="line number5 index4 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">settings.Name = "pageControl";</code></div><div class="line number6 index5 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">settings.CallbackRouteValues = new { Controller = "Home", Action = "TabControlPartial" };</code></div><div class="line number7 index6 alt2">&nbsp;</div><div class="line number8 index7 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">settings.TabPages.Add("page1");</code></div><div class="line number9 index8 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">settings.TabPages.Add(tabPage =&gt; {</code></div><div class="line number10 index9 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">tabPage.Text = "page2";</code></div><div class="line number11 index10 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">tabPage.SetContent(() =&gt; { </code></div><div class="line number12 index11 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">Html.RenderPartial("GridViewPartial", Model);</code></div><div class="line number13 index12 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">});</code></div><div class="line number14 index13 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">});</code></div><div class="line number15 index14 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">})</code></div><div class="line number16 index15 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">.Render(); </code></div><div class="line number17 index16 alt2"><code class="xml plain">%&gt;</code></div></div></td></tr></tbody></table></div></div>
<p>3. Create the 'GridViewPartial.ascx' view and add the following code for the GridView extension:</p>
<div><div id="highlighter_288410" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">&lt;%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %&gt;</code></div><div class="line number2 index1 alt1"><code class="xml plain">&lt;%</code></div><div class="line number3 index2 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">Html.DevExpress().GridView(settings =&gt; {</code></div><div class="line number4 index3 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">settings.Name = "Grid";</code></div><div class="line number5 index4 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">settings.CallbackRouteValues = new { Controller = "Home", Action = "GridViewPartial" };</code></div><div class="line number6 index5 alt1">&nbsp;</div><div class="line number7 index6 alt2"><code class="xml plain">...</code></div><div class="line number8 index7 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">})</code></div><div class="line number9 index8 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">.Bind(Model)</code></div><div class="line number10 index9 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">.Render();&nbsp;&nbsp;&nbsp; </code></div><div class="line number11 index10 alt2"><code class="xml plain">%&gt;</code></div></div></td></tr></tbody></table></div></div>
<p>4. Be sure to have your methods also defined in your Controller. In the sample above, I'm referencing the HomeController.cs:</p>
<div><div id="highlighter_771315" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">...</code></div><div class="line number2 index1 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">public</code> <code class="csharp plain">ActionResult TabControl() {</code></div><div class="line number3 index2 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code> <code class="csharp plain">View(GetData());</code></div><div class="line number4 index3 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">}</code></div><div class="line number5 index4 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">public</code> <code class="csharp plain">ActionResult TabControlPartial() {</code></div><div class="line number6 index5 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code> <code class="csharp plain">PartialView(GetData());</code></div><div class="line number7 index6 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">}</code></div><div class="line number8 index7 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">public</code> <code class="csharp plain">ActionResult GridViewPartial() {</code></div><div class="line number9 index8 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code> <code class="csharp plain">PartialView(GetData());</code></div><div class="line number10 index9 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">}</code></div><div class="line number11 index10 alt2">&nbsp;</div><div class="line number12 index11 alt1"><code class="csharp plain">...</code></div></div></td></tr></tbody></table></div></div>
<p>If want to convert the above code to the 'Razor' view engine then please check out these excellent resources:</p>
<ul>
<li><a href="http://tv.devexpress.com/#AspNetMvcDevExpressExtensions;MVC+Extensions.product;1">DevExpress with ASP.NET MVC 3 Razor View Engine</a></li>
<li>Also check out the handy "<a href="http://documentation.devexpress.com/#AspNet/CustomDocument9944">Using in Razor Views</a>" help topic</li>
</ul>
<p>Enjoy and thanks for using the DevExpress MVC Extensions!</p>
<div class="dxperience-blog-block">
<h4>Build Your Best - Without Limits or Compromise</h4>
<p>Try the DevExpress ASP.NET MVC Extensions online now: <a href="http://mvc.devexpress.com">http://mvc.devexpress.com</a></p>
<p>Read the latest news about DevExpress ASP.NET MVC Extensions</p>
<p>Download a free and fully-functional version of DXperience now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p>
</div>
<p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>193</ID>
<Date>2011-06-15T02:30:00+04:00</Date>
<From>Miha Markic</From>
<Subject>Windows Live developer platform adds OAuth 2.0</Subject>
<Text><p>Hey Azret,</p>
<p>You might add to this post the "quick" steps to make this sample work: get and set key/secret, and use proper redirect uri.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>192</ID>
<Date>2011-06-14T19:18:00+04:00</Date>
<From>Azret Botash (DevExpress)</From>
<Subject>Windows Live developer platform adds OAuth 2.0</Subject>
<Text> <p><img style="background-image: none; border: 0px none; margin: 0px 9px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px;" title="" alt="OAuth 2.0" src="http://oauth.net/images/oauth-2-sm.png" align="left" border="0">Today Windows Live team <a href="http://windowsteamblog.com/windows_live/b/windowslive/archive/2011/06/14/windows-live-developer-platform-adds-oauth-2-0-and-more-continuing-to-let-users-connect-the-devices-apps-and-sites-they-choose.aspx">announced</a> support for OAuth 2.0</p> <p>Quote <em>“Not only have we made Messenger Connect the most up-to-date implementation of OAuth 2.0, but we’ve also taken this opportunity to improve key aspects of the developer and end user experience when going through the user authorization process…”</em></p> <p> <br>I blogged about our new <a href="http://community.devexpress.com/blogs/theonewith/archive/2011/06/03/sneak-peek-oauth-library-coming-soon-in-v2011-volume-1.aspx">OAuth library</a> recently and showed you how to <a href="http://community.devexpress.com/blogs/theonewith/archive/2011/06/06/wpf-grid-control-per-pixel-scrolling-datarowtemplateselector-and-some-fun.aspx">connect to Facebook</a>. Here is another example, this time we’ll connect to the new <a href="http://msdn.microsoft.com/en-us/library/hh243650.aspx">Windows Live - v5.0</a>.</p> <p><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="" alt="" src="http://community.devexpress.com/blogs/theonewith/image_60074F08.png" width="599" border="0" height="455"></p> <p><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="" alt="" src="http://community.devexpress.com/blogs/theonewith/image_65E1F2A1.png" width="343" border="0" height="357"></p> <p><a href="http://dxpr.es/myVb9Q">Download Code</a></p> <p>Cheers</p> <p>Azret</p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>191</ID>
<Date>2011-06-14T15:24:00+04:00</Date>
<From>Mohsen Benkhellat</From>
<Subject>Working with CRUD activities – Short Transactions</Subject>
<Text><p>Thanks Apostolis for the heads up.</p>
<p>First, I must admit that I did not yet explore all the goodies in this module.</p>
<p>Just wondering what would happen if after the WF process wakes up and finds the previously active issue does not exist anymore. I guess it would be just a matter of adding a condition for that.</p>
<p>Thanks again and keep up.</p>
<p>Mohsen</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>190</ID>
<Date>2011-06-14T11:31:00+04:00</Date>
<From>Apostolis Bekiaris (DevExpress)</From>
<Subject>Working with CRUD activities – Short Transactions</Subject>
<Text><p align="justify">In this post we are going to examine a workflow model that involves long operations. Our example will be based on the following concept which should be familiar from previous posts.</p> <p align="justify"><em>When working with workflows and persistent objects it is better to keep transactions short. For example, when reading data from a database, checking values, modifying, creating, deleting, committing changes and completing transactions. It is better to avoid continuous operations in the ObjectSpaceTransactionScope, because we are inside an XPO transaction. Since this is an atomic operation, workflow can not be persisted while workflow is inside the ObjectSpaceTransactionScope. If there is a need to use delays, especially within loops, consider placing them outside XAF’s container activities (NoPersistScope, ObjectSpaceTransactionScope).</em></p> <p align="justify">Take this example, an issue is active after 4 hours and we need to notify the manager about it. We can use the WorkFlow MainDemo as a starting point for providing a solution to this scenario.</p> <p align="justify">First we need to modify our issue class to provide creation time information. Adding a new DateTime property and initializing it after object construction fulfills this requirement.</p> <p align="justify"><a href="http://community.devexpress.com/blogs/eaf/image_3B80BBF0.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/eaf/image_thumb_55B0FF47.png" width="523" border="0" height="441"></a></p> <p align="justify">Secondly we are going to create a new workflow definition at runtime and set the Target Object Type to <em>Issue. </em>At the same time we are going to check the <em>Object Is Created</em> without providing any criteria. These adjustments are enough for the workflow server services to start the workflow definition.</p> <p align="justify"><a href="http://community.devexpress.com/blogs/eaf/image_33E526B6.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/eaf/image_thumb_3953975A.png" width="488" border="0" height="311"></a></p> <p align="justify">We are going to initiate the workflow model by retrieving the creation time from the <em>Issue </em>and storing it in a variable. There will be additional stages in this workflow, thus it is better to start with a <em>Sequence </em>activity that will function as a container and will help share variables between child activities.</p> <p align="justify"><a href="http://community.devexpress.com/blogs/eaf/image_29D0858B.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/eaf/image_thumb_40AF5707.png" width="698" border="0" height="471"></a></p> <p align="justify">The name of the <em>Sequence </em>activity has been changed to <em>SequenceRoot</em><em>. </em>The reason is that it is not clear how many <em>Sequence </em>activities will be used and we want <em>Scope </em>to differentiate between them. Of course this is a matter of design preference and more confident developers may skip this step. <em>issueCreateOn </em>holds the creation time letting us move to the next step. The result is that we are able to use a <em>Delay </em>activity inside a <em>DoWhile</em> to periodically check if the 4hr time interval has passed. Alternatively we could follow similar approaches to model this. Using a small delay duration we could again calculate if the time interval has passed allowing us to inject behavior just after the <em>Issue</em> is closed. An example would be to sent an email that the <em>Issue</em> is not active any more.</p> <p align="justify"><a href="http://community.devexpress.com/blogs/eaf/image_779E59FC.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/eaf/image_thumb_027B3B45.png" width="711" border="0" height="540"></a></p> <p align="justify">In the above design the <em>DoWhile</em> activity cannot act as a container. Moreover since we haven’t implemented the workflow yet we have used a <em>Sequence </em>activity to fill this role. We have also parameterized the duration of the <em>Delay activity </em>with the <em>maxCloseIssue</em> variable. Finally we have used this variable to calculate when the time interval passed.</p> <p align="justify">The design is not yet complete due to the fact that the <em>DoWhile</em> condition should include a check for whether a current issue is active. There will be a problem with the <em>Delay </em>activity at this point because the workflow will unload and persist to the database. In order to prevent this we need to query the issue again, after the <em>Delay </em>duration, to obtain its active property as in the first stage.</p> <p align="justify"><a href="http://community.devexpress.com/blogs/eaf/image_5923F346.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/eaf/image_thumb_34CEE8F7.png" width="707" border="0" height="571"></a></p> <p align="justify">&nbsp;</p> <p align="justify">Finally we need to update the <em>DoWhile</em> condition with the <em>isIssueActive</em> constrain.</p> <p align="justify">&nbsp;</p> <p align="justify"><a href="http://community.devexpress.com/blogs/eaf/image_285B7B45.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/eaf/image_thumb_26AAAF71.png" width="706" border="0" height="400"></a></p> <p align="justify">The following diagrams show the final stages of the workflow. All that remains is to create a task to notify the manager. We can use an <em>If </em>activity to check if the Issue is active then query the <em>Issue again </em>and create a new <em>Task</em> in order to achieve this.</p> <p align="justify"><a href="http://community.devexpress.com/blogs/eaf/image_36D6776A.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/eaf/image_thumb_60F5FF85.png" width="1122" border="0" height="639"></a></p> <p>There are cases however with complex conditions (see <em>DoWhile</em> condition above) or times when we want to get the values of variables or even see whether objects returned from activities like <em>GetObjectsByCriteria </em>are valid. In such cases we can use the debugger and initialize the targetObjectId argument with a valid value. We are then able to set the breakpoints we want and just hit run to see if our workflow execution is valid. The next video demonstrates the above and more</p> <div>We would appreciate your feedback on this post. Has it been useful to you? Feel free to contact us&nbsp; with any further questions.</div> <p><u>Related Links <br></u><a href="http://tv.devexpress.com/#XAFCRUDActivities" target="_blank">Videos in our TV channel</a> <br><a href="http://documentation.devexpress.com/#Xaf/CustomDocument3343" target="_blank">Online documentation</a> <br><a href="http://community.devexpress.com/blogs/eaf/archive/tags/WF/default.aspx" target="_blank">Blog posts</a></p> </Text>
<HasAttachment>true</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>189</ID>
<Date>2011-06-10T13:58:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET File Manager - Control Role-Based Security Access With Rules (available now in v2011 vol 1)</Subject>
<Text><p>Thanks Joe!</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>188</ID>
<Date>2011-06-10T10:09:00+04:00</Date>
<From>Brendon Muck [DX Squad]</From>
<Subject>Video: Meet Rory Becker - Amazing CodeRush Plugin Developer and Evangelist</Subject>
<Text><p>I would insist on DX hiring Christopher Walken to portray me in any videos.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>187</ID>
<Date>2011-06-10T05:13:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>@Vassilios:</p>
<p>Please check out the following line in the service code:</p>
<p>string connectionString = MSSqlConnectionProvider.GetConnectionString("localhost", "ServiceDB"); </p>
<p>Then we connect to our service from the client:</p>
<p>XpoDefault.DataLayer = XpoDefault.GetDataLayer("<a rel="nofollow" target="_new" href="http://localhost:64466/Service1.svc%22">localhost/Service1.svc"</a>, AutoCreateOption.DatabaseAndSchema); </p>
<p>Please feel free to contact our Support Team in case of any further difficulties.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>186</ID>
<Date>2011-06-09T17:41:00+04:00</Date>
<From>Joe Roberts</From>
<Subject>ASP.NET File Manager - Control Role-Based Security Access With Rules (available now in v2011 vol 1)</Subject>
<Text><p>Great job guys! This will save me a lot of time.</p>
<p>Woo hoo! finally we get the final bits for v2011 vol 1. Now I have to get to work on updates for customers.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>184</ID>
<Date>2011-06-09T05:11:00+04:00</Date>
<From>Marion (DevExpress Support)</From>
<Subject>ASP.NET File Manager - Control Role-Based Security Access With Rules (available now in v2011 vol 1)</Subject>
<Text><p>Hello Shahid Malek,</p>
<p>At present ASPxFileManager does not support sorting via a header click, because the ASPxFileManager layout has no header. I would like to note that we have an appropriate suggestion to this feature:</p>
<p><a rel="nofollow" target="_new" href="http://www.devexpress.com/Support/Center/p/S36152.aspx">S36152</a></p>
<p>However, you can utilize the sorting mechanism as described below:</p>
<p><a rel="nofollow" target="_new" href="http://www.devexpress.com/Support/Center/p/Q326778.aspx">Q326778</a></p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>183</ID>
<Date>2011-06-09T02:09:00+04:00</Date>
<From>Alberto Payero Mota</From>
<Subject>11.1 Feature Days (from TechEd) – New ASP.NET MVC Reporting Extensions</Subject>
<Text><p>Mr., can you tell me when you will release the new version with ASP.NET MVC Reporting Extensions?.</p>
<p>and I want to mak a test!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>182</ID>
<Date>2011-06-09T01:21:00+04:00</Date>
<From>Shahid Malek</From>
<Subject>ASP.NET File Manager - Control Role-Based Security Access With Rules (available now in v2011 vol 1)</Subject>
<Text><p>is this control support sorting (clicking header) like windows explorer ?</p>
<p>if not then how can we sort the data ?</p>
<p>sorting method should be very simple with no extra coding</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>185</ID>
<Date>2011-06-09T00:00:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET File Manager - Control Role-Based Security Access With Rules (available now in v2011 vol 1)</Subject>
<Text><p>Check out the <a href="http://tv.devexpress.com/#ASPxFileManagerSecurity" target="_blank">'ASP.NET File Manager Access Control'</a> video below which shows how you can control security access for the DevExpress ASP.NET File Manager in the DXperience v2011 volume 1 release:</p> <p><a href="http://tv.devexpress.com/#ASPxFileManagerSecurity" target="_blank"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Video: ASP.NET File Manager Security Access Rules" alt="Video: ASP.NET File Manager Security Access Rules" src="http://community.devexpress.com/blogs/aspnet/image_11CA91FF.png" width="454" border="0" height="257"></a></p> <p>Watch the video to learn how the new 'Access Control' feature helps you manage the ASPxFileManager's security using rules and role based permissions.</p> <h3>Rules, Roles &amp; Permissions</h3> <p>The ASPxFileManager allows you to define access permissions for folders and files using a set of folder/file access rules using the <strong>SettingsPermissions.AccessRules</strong> collection. And you can also define Roles to further extend the security access of the ASPxFileManager!</p> <p>The <strong>ASPxFileManager.SettingsPermissions.AccessRules</strong> property is a collection of rules. There are <strong>two types of rules</strong>:</p> <ol> <li>Folder rules via <strong>FileManagerFolderAccessRule </strong>object </li> <li>File rules via <strong>FileManagerFileAccessRule </strong>object<strong>&nbsp;</strong> </li> </ol> <p>An access rule specifies a path to which it is applied and lists permissions like allowed or denied that are associated with this rule. A Rule with a <strong>higher index</strong> in the AccessRules collection will have a higher <strong>priority</strong>. And <strong>every rule</strong> contains these set of <strong>properties</strong>:</p> <ul> <li>string<strong> Path</strong>; // the folder or file path that the rule will apply to. (e.g.: Folder1\SubFolder2). You can use the wildcard '*' symbol to denote 'all files' (e.g. Folder3\*.xml) </li> <li>string <strong>Role</strong>; // allows you to filter rules by a user role (if <strong>Role</strong> is empty, then the rule will apply to all users) </li> </ul> <p>Roles are applied as a single string using the <strong>ASPxFileManager.SettingsPermissions.Role</strong> property.</p> <p>A <strong>folder access rule</strong> contains these set of permission <strong>properties</strong>:</p> <ul> <li>Rights<strong> Browse</strong>; // is a permission to view folder </li> <li>Rights<strong> Edit</strong>: // is a permission to edit the folder and folder's content </li> <li>Rights<strong> EditContents</strong> // is a permission to edit folder's content </li> <li>Rights<strong> Upload</strong> // is a permission to upload files to the folder </li> </ul> <p>A <strong>file access rule</strong> contains the next set of permission's <strong>properties</strong>:</p> <ul> <li>Rights<strong> Browse</strong>; // is a permission to view files </li> <li>Rights<strong> Edit</strong>; // is a permission to edit files </li> <li>Rights<strong> Download</strong>; // is a permission to download files </li> </ul> <p><strong>Rights</strong> is the enum type: Rights { Allow, Deny, Default }</p> <h3>Examples</h3> <p>Take a look at the ASPX markup code below to learn various access control scenarios:</p> <p>1. Two file rules 'Deny' editing of any file except if they have a JPG file extension:</p> <div><div id="highlighter_110632" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2 highlighted">5</div><div class="line number6 index5 alt1 highlighted">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">dx:ASPxFileManager</code> <code class="xml color1">ID</code><code class="xml plain">=</code><code class="xml string">"ASPxFileManager1"</code> <code class="xml color1">runat</code><code class="xml plain">=</code><code class="xml string">"server"</code><code class="xml plain">&gt;</code></div><div class="line number2 index1 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">SettingsEditing</code> <code class="xml color1">AllowCreate</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml color1">AllowDelete</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml color1">AllowMove</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml color1">AllowRename</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml plain">/&gt;</code></div><div class="line number3 index2 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">SettingsPermissions</code><code class="xml plain">&gt;</code></div><div class="line number4 index3 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">AccessRules</code><code class="xml plain">&gt;</code></div><div class="line number5 index4 alt2 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">dx:FileManagerFileAccessRule</code> <code class="xml color1">Edit</code><code class="xml plain">=</code><code class="xml string">"Deny"</code> <code class="xml color1">Path</code><code class="xml plain">=</code><code class="xml string">"*"</code> <code class="xml plain">/&gt;</code></div><div class="line number6 index5 alt1 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">dx:FileManagerFileAccessRule</code> <code class="xml color1">Edit</code><code class="xml plain">=</code><code class="xml string">"Allow"</code> <code class="xml color1">Path</code><code class="xml plain">=</code><code class="xml string">"*.jpg"</code> <code class="xml plain">/&gt;</code></div><div class="line number7 index6 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">AccessRules</code><code class="xml plain">&gt;</code></div><div class="line number8 index7 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">SettingsPermissions</code><code class="xml plain">&gt;</code></div><div class="line number9 index8 alt2"><code class="xml plain">&lt;/</code><code class="xml keyword">dx:ASPxFileManager</code><code class="xml plain">&gt;</code></div></div></td></tr></tbody></table></div></div>
<p>2. One folder rule to 'Deny' the browse action of the 'Admin' folder:</p>
<div><div id="highlighter_150629" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1 highlighted">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">dx:ASPxFileManager</code> <code class="xml color1">ID</code><code class="xml plain">=</code><code class="xml string">"ASPxFileManager1"</code> <code class="xml color1">runat</code><code class="xml plain">=</code><code class="xml string">"server"</code><code class="xml plain">&gt;</code></div><div class="line number2 index1 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">SettingsPermissions</code><code class="xml plain">&gt;</code></div><div class="line number3 index2 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">AccessRules</code><code class="xml plain">&gt;</code></div><div class="line number4 index3 alt1 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">dx:FileManagerFolderAccessRule</code> <code class="xml color1">Browse</code><code class="xml plain">=</code><code class="xml string">"Deny"</code> <code class="xml color1">Path</code><code class="xml plain">=</code><code class="xml string">"Admin"</code> <code class="xml plain">/&gt;</code></div><div class="line number5 index4 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">AccessRules</code><code class="xml plain">&gt;</code></div><div class="line number6 index5 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">SettingsPermissions</code><code class="xml plain">&gt;</code></div><div class="line number7 index6 alt2"><code class="xml plain">&lt;/</code><code class="xml keyword">dx:ASPxFileManager</code><code class="xml plain">&gt;</code></div></div></td></tr></tbody></table></div></div>
<p>3. One folder rule to 'Deny' the Edit action of the ReadOnly folder:</p>
<div><div id="highlighter_377098" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2 highlighted">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">dx:ASPxFileManager</code> <code class="xml color1">ID</code><code class="xml plain">=</code><code class="xml string">"ASPxFileManager1"</code> <code class="xml color1">runat</code><code class="xml plain">=</code><code class="xml string">"server"</code><code class="xml plain">&gt;</code></div><div class="line number2 index1 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">SettingsEditing</code> <code class="xml color1">AllowCreate</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml color1">AllowDelete</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml color1">AllowMove</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml color1">AllowRename</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml plain">/&gt;</code></div><div class="line number3 index2 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">SettingsPermissions</code><code class="xml plain">&gt;</code></div><div class="line number4 index3 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">AccessRules</code><code class="xml plain">&gt;</code></div><div class="line number5 index4 alt2 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">dx:FileManagerFolderAccessRule</code> <code class="xml color1">Edit</code><code class="xml plain">=</code><code class="xml string">"Deny"</code> <code class="xml color1">Path</code><code class="xml plain">=</code><code class="xml string">"ReadOnly"</code> <code class="xml plain">/&gt;</code></div><div class="line number6 index5 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">AccessRules</code><code class="xml plain">&gt;</code></div><div class="line number7 index6 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">SettingsPermissions</code><code class="xml plain">&gt;</code></div><div class="line number8 index7 alt1"><code class="xml plain">&lt;/</code><code class="xml keyword">dx:ASPxFileManager</code><code class="xml plain">&gt;</code></div></div></td></tr></tbody></table></div></div>
<p>4. Two folder rules to 'Deny' the upload action for all folders except the UploadFolder folder:</p>
<div><div id="highlighter_530548" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1 highlighted">4</div><div class="line number5 index4 alt2 highlighted">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">dx:ASPxFileManager</code> <code class="xml color1">ID</code><code class="xml plain">=</code><code class="xml string">"ASPxFileManager1"</code> <code class="xml color1">runat</code><code class="xml plain">=</code><code class="xml string">"server"</code><code class="xml plain">&gt;</code></div><div class="line number2 index1 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">SettingsPermissions</code><code class="xml plain">&gt;</code></div><div class="line number3 index2 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">AccessRules</code><code class="xml plain">&gt;</code></div><div class="line number4 index3 alt1 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">dx:FileManagerFolderAccessRule</code> <code class="xml color1">Upload</code><code class="xml plain">=</code><code class="xml string">"Deny"</code> <code class="xml color1">Path</code><code class="xml plain">=</code><code class="xml string">""</code> <code class="xml plain">/&gt;</code></div><div class="line number5 index4 alt2 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">dx:FileManagerFolderAccessRule</code> <code class="xml color1">Upload</code><code class="xml plain">=</code><code class="xml string">"Allow"</code> <code class="xml color1">Path</code><code class="xml plain">=</code><code class="xml string">"UploadFolder"</code> <code class="xml plain">/&gt;</code></div><div class="line number6 index5 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">AccessRules</code><code class="xml plain">&gt;</code></div><div class="line number7 index6 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">SettingsPermissions</code><code class="xml plain">&gt;</code></div><div class="line number8 index7 alt1"><code class="xml plain">&lt;/</code><code class="xml keyword">dx:ASPxFileManager</code><code class="xml plain">&gt;</code></div></div></td></tr></tbody></table></div></div>
<p>5. In this sample, only the 'Admin' role is allowed to edit files. All non-admin users are set to 'Deny' the edit action:</p>
<p><span style="text-decoration: underline;">Default.aspx:</span></p>
<div><div id="highlighter_120274" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1 highlighted">4</div><div class="line number5 index4 alt2 highlighted">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">dx:ASPxFileManager</code> <code class="xml color1">ID</code><code class="xml plain">=</code><code class="xml string">"ASPxFileManager1"</code> <code class="xml color1">runat</code><code class="xml plain">=</code><code class="xml string">"server"</code><code class="xml plain">&gt;</code></div><div class="line number2 index1 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">SettingsPermissions</code><code class="xml plain">&gt;</code></div><div class="line number3 index2 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">AccessRules</code><code class="xml plain">&gt;</code></div><div class="line number4 index3 alt1 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">dx:FileManagerFolderAccessRule</code> <code class="xml color1">Edit</code><code class="xml plain">=</code><code class="xml string">"Deny"</code> <code class="xml color1">Path</code><code class="xml plain">=</code><code class="xml string">""</code> <code class="xml plain">/&gt;</code></div><div class="line number5 index4 alt2 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">dx:FileManagerFolderAccessRule</code> <code class="xml color1">Edit</code><code class="xml plain">=</code><code class="xml string">"Allow"</code> <code class="xml color1">Path</code><code class="xml plain">=</code><code class="xml string">""</code> <code class="xml plain">Role=”Admin” /&gt;</code></div><div class="line number6 index5 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">AccessRules</code><code class="xml plain">&gt;</code></div><div class="line number7 index6 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">SettingsPermissions</code><code class="xml plain">&gt;</code></div><div class="line number8 index7 alt1"><code class="xml plain">&lt;/</code><code class="xml keyword">dx:ASPxFileManager</code><code class="xml plain">&gt;</code></div></div></td></tr></tbody></table></div></div>
<p><span style="text-decoration: underline;">Default.</span><em><span style="text-decoration: underline;">aspx.cs</span>:</em></p>
<div><div id="highlighter_512373" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">ASPxFileManager1.SettingsPermissions.Role = User.IsAdmin ? “Admin” : </code><code class="csharp keyword">string</code><code class="csharp plain">.Empty;</code></div></div></td></tr></tbody></table></div></div>
<h3>Summary</h3>
<p>You can easily set up access rules for folders (including their files and child folders) and individual files using the ASPxFileManager's Rules, Roles and Permissions settings.</p>
<p>Are you excited about the new access control feature of the ASPxFileManager? Drop me a line below with your thoughts, thanks!</p>
<div class="dxperience-blog-block">
<h4>Save time and money...</h4>
<p>Save time and money with high quality pre-built components for ASP.NET, Windows Forms, WPF, Silverlight and VCL as well as IDE Productivity Tools and Business Application Frameworks, all backed by world-class service and support. Our technologies help you build your best, see complex software with greater clarity, increase your productivity and create stunning applications for Windows and Web in the shortest possible time.</p>
<p>Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p>
</div>
<p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>181</ID>
<Date>2011-06-08T15:16:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>Video: Meet Rory Becker - Amazing CodeRush Plugin Developer and Evangelist</Subject>
<Text><p>Thanks Steve, fixed!</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>180</ID>
<Date>2011-06-08T09:23:00+04:00</Date>
<From>Steven Rasmussen</From>
<Subject>Video: Meet Rory Becker - Amazing CodeRush Plugin Developer and Evangelist</Subject>
<Text><p>Congrats Rory! &nbsp;FYI- Clicking on the image doesn't take you to the video :)</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>179</ID>
<Date>2011-06-07T21:05:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>Video: Meet Rory Becker - Amazing CodeRush Plugin Developer and Evangelist</Subject>
<Text>
<p>Check out the fun <a href="http://tv.devexpress.com/#TechEd11RoryBecker" target="_blank">"Meet Rory Becker" video</a> that finally exposes what the real Rory Becker looks like! </p>
<p>Watch the video to see my friend Rory talk about:</p>
<ul>
<li>CodeRush evangelism </li>
<li>Working with CodeRush devs </li>
<li>Working with Mark Miller!?! </li></ul>
<p>Mark Miller makes an appearance in the video to discuss the free CodeRush training that his team has provided through twitter and the blogs:</p>
<p><a href="http://tv.devexpress.com/#TechEd11RoryBecker" target="_blank"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Video: Meet Rory Becker" alt="Video: Meet Rory Becker" src="http://community.devexpress.com/blogs/aspnet/image_3F84175B.png" width="548" border="0" height="310"></a></p>
<h3>Meet Rory Becker</h3>
<p>Rory Becker is a CodeRush plugin expert and the current <a href="http://devexpress.com/CodeRush" target="_blank">DevExpress CodeRush</a> evangelist. </p>
<p>He helped create this excellent plugin <a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/Community.xml" target="_blank">collection</a> on Google Code: <a href="http://code.google.com/p/dxcorecommunityplugins/">DXCore Community Plug-ins on Code.Google.com</a></p>
<p>Watch the CodeRush plugin videos that Rory and I have recorded:</p>
<p><a href="http://community.devexpress.com/blogs/aspnet/archive/tags/CodeRush/default.aspx" target="_blank">CodeRush Plugins Screencasts</a></p>
<p>In fact, Rory and I have one of the best CodeRush videos! </p>
<p><a href="http://community.devexpress.com/blogs/aspnet/archive/2010/07/22/coderush-101-video.aspx" target="_blank">CodeRush 101 - The Video You Should Watch First</a></p>
<h3>Twitter Fanatic</h3>
<p>Want to talk with Rory? He's available through various channels, including his favorite, Twitter:</p>
<p>Twitter: <a href="http://twitter.com/Rorybecker" target="_blank">@RoryBecker</a></p>
<p>Blog: <a href="http://devexpress.com/Rory">http://devexpress.com/Rory</a></p>
<p>Links mentioned in the video:</p>
<p>Alex Skorkin, CodeRush lead dev's excellent Blog: <a href="http://skorkin.com" target="_blank">http://skorkin.com</a></p>
<p>Mark Miller's Twitter: <a href="http://twitter.com/millermark" target="_blank">@MillerMark</a></p>
<p>Mark Miller's blog: <a href="http://devexpress.com/Mark">http://devexpress.com/Mark</a></p>
<p>&nbsp;</p>
<p>Rory joined DevExpress almost a year ago but for fun, please leave him a "congrats" message in the comments below. <img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://community.devexpress.com/blogs/aspnet/wlEmoticon-smile_16990252.png"></p>
<p>&nbsp;</p>
<div class="dxperience-blog-block">
<h4>DXperience? What's That?</h4>
<p>DXperience is the .NET developer's secret weapon. Get full access to a complete suite of professional components that let you instantly drop in new features, designer styles and fast performance for your applications. Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p></div>
<p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>178</ID>
<Date>2011-06-06T19:17:00+04:00</Date>
<From>James Foye</From>
<Subject>Changes to the P?Type? Template in CodeRush 11.1</Subject>
<Text><p>I agree. Though I see the "sprinkle the field declarations through the class" approach a lot, I find it makes it difficult to get a quick sense of what the class is and does.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>177</ID>
<Date>2011-06-06T15:34:00+04:00</Date>
<From>Rory Becker - DevExpress</From>
<Subject>Changes to the P?Type? Template in CodeRush 11.1</Subject>
<Text><p>Our previous posts on the <a href="http://community.devexpress.com/blogs/rorybecker/archive/2011/06/06/new-contexts-in-coderush-11-1.aspx">New Contexts</a>, the <a href="http://community.devexpress.com/blogs/rorybecker/archive/2011/06/06/new-stringproviders-in-coderush-11-1.aspx">New StringProviders</a> and the <a href="http://community.devexpress.com/blogs/rorybecker/archive/2011/06/06/new-goto-textcommand-in-coderush-11-1.aspx">New Goto TextCommand</a> in CodeRush 11.1 are obviously useful in their own right, but as hinted at they also come together to contribute to an upgrade to the standard <strong>p?Type? </strong>template.</p> <p>The <strong>p?Type?</strong> template now emits any backing fields together in a single region. This renders the code easier to read, making it simpler to understand and maintain.</p> <p>Consider the code expansion generated with the previous version of the p?Type? template…</p> <p><a href="http://community.devexpress.com/blogs/rorybecker/pType10_2_2E6B12B3.gif"><img style="display: inline;" title="pType10_2" alt="pType10_2" src="http://community.devexpress.com/blogs/rorybecker/pType10_2_thumb_24567188.gif" width="672" height="394"></a></p> <p>As you can see, each field generated for backing store is placed next to the property that accesses it. This can be useful for grouping by function, but it can lead to code which is harder to read. Fields that are distributed in this way can be harder to locate are easily skipped over when scanning through code. We’ve long been asked for a way to group all te generated fields together in one place. </p> <p>The new implementation of the <strong>p?Type? </strong>does exactly that, navigating to the first field in the type, injecting the field in this location and then returning to finish emitting the property at the location originally picked by the user.</p> <p><a href="http://community.devexpress.com/blogs/rorybecker/pType11_1_669963FE.gif"><img style="display: inline;" title="pType11_1" alt="pType11_1" src="http://community.devexpress.com/blogs/rorybecker/pType11_1_thumb_08C149B8.gif" width="672" height="479"></a></p> <p>I think you’ll agree it’s also a lot easier on the eyes.</p></Text>
<HasAttachment>true</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>176</ID>
<Date>2011-06-03T12:26:00+04:00</Date>
<From>Mark Miller (DevExpress)</From>
<Subject>New CodeRush Feature: Quick Pair (Parens, Brackets, Quotes, etc.) for Visual Studio</Subject>
<Text><p>Bob Archer: It's certainly possible to add a missing leading paren when the closing paren is pressed. Maybe we'll write that in a future CodeRush Feature Workshop (same for your suggestion about automatically adding parens when a method is selected in Intellisense). &nbsp;</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>175</ID>
<Date>2011-06-03T08:28:00+04:00</Date>
<From>Jugo Radonic</From>
<Subject>11.1 Feature Days (from TechEd) – New ASP.NET MVC Reporting Extensions</Subject>
<Text><p>Great stuff! </p>
<p>I am new to ASP.MVC, just finishing my first real project in it and I really like it. With that said, any new extensions are more then welcome.</p>
<p>With reports solved, I'd say we only need you guys to port your DataView and News over to MVC. Everything you have so far plus those would make it possible to migrate any web app we made so far to MVC.</p>
<p>Keep up the good work. Cheers!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>174</ID>
<Date>2011-06-02T21:16:00+04:00</Date>
<From>Alberto Payero Mota</From>
<Subject>11.1 Feature Days (from TechEd) – New ASP.NET MVC Reporting Extensions</Subject>
<Text><p>Other things, this only work with asp.net mvc 3 or work with Asp.net MVC 2 too?.</p>
<p>Plase try to expose example in vb.net too!</p>
<p>thanks!.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>172</ID>
<Date>2011-06-02T18:15:00+04:00</Date>
<From>Bob Archer</From>
<Subject>New CodeRush Feature: Quick Pair (Parens, Brackets, Quotes, etc.) for Visual Studio</Subject>
<Text><p>Don't smart brackets give you the equiv of Ctrl+( and Ctrl+[ ? </p>
<p>What I would like to see is if I just type a close ) or ] and it sees that there is no un-opened version of that block type it puts the open before it and gives me the caret after it. So rather than use Ctrl+) I can just type ).</p>
<p>Oh, and for bonus points, when I choose a function from intellesense and press a . I would like coderush to add the prenes if I chose a function rather than a property.</p>
<p>BOb</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>173</ID>
<Date>2011-06-02T18:15:00+04:00</Date>
<From>Robert Leahey</From>
<Subject>New CodeRush Feature: Quick Pair (Parens, Brackets, Quotes, etc.) for Visual Studio</Subject>
<Text><p>Thanks Mark, the webinar was great. </p></Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>171</ID>
<Date>2011-06-01T14:31:00+04:00</Date>
<From>Mark Miller (DevExpress)</From>
<Subject>New CodeRush Feature: Quick Pair (Parens, Brackets, Quotes, etc.) for Visual Studio</Subject>
<Text><p>Today was the first <strong>CodeRush Feature Wednesday</strong> webinar presented by <a href="http://www.devexpress.com/rory" target="_blank">Rory Becker</a> and myself. And for our first feature we decided to implement something I wanted – a better way to enter paired delimiters in code. When entering paired delimiters, there seem to be a number of common scenarios:</p> <ul> <li>Enter the pair and move on (for example, parens in a C# method call that takes no arguments) </li> <li>Enter the pair and place the caret between the pair (but then you have the challenge of moving outside the pair) </li> <li>Surround a selection with the pair </li> </ul> <p>To implement this feature, in the webinar we created a new Action called QuickPair which accepts leading and trailing delimiters, and an optional third parameter to determine whether the caret goes inside the delimiters or to the right outside the delimiters.</p> <p>You can download and install the feature here:</p> <p><a href="http://code.google.com/p/dxcorecommunityplugins/wiki/CR_QuickPair">http://code.google.com/p/dxcorecommunityplugins/wiki/CR_QuickPair</a></p> <p>This plug-in includes shortcut bindings based on the US keyboard. You may need to change these bindings to match your keyboard locale settings. For example, on a US keyboard, the parens are located above the 9 and 0 keys, respectively, like this:</p> <p><a href="http://community.devexpress.com/blogs/markmiller/90_73752AD9.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="90" alt="90" src="http://community.devexpress.com/blogs/markmiller/90_thumb_7EBE3F16.png" width="244" border="0" height="164"></a></p> <p>&nbsp;</p> <p>The curly braces are above the brackets:</p> <p><a href="http://community.devexpress.com/blogs/markmiller/Brackets_688823C4.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Brackets" alt="Brackets" src="http://community.devexpress.com/blogs/markmiller/Brackets_thumb_54225E39.png" width="244" border="0" height="164"></a></p> <p>&nbsp;</p> <p>The angle brackets are above the comma and period keys:</p> <p><a href="http://community.devexpress.com/blogs/markmiller/AngleBrackets_39E1F515.png"><img style="background-image: none; border-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="AngleBrackets" alt="AngleBrackets" src="http://community.devexpress.com/blogs/markmiller/AngleBrackets_thumb_706FA059.png" width="244" border="0" height="164"></a></p> <p>&nbsp;</p> <p>And the double-quote is above the apostrophe (and the key to the left is the semi-colon):</p> <p><a href="http://community.devexpress.com/blogs/markmiller/Quote_1D185A33.png"><img style="background-image: none; border-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Quote" alt="Quote" src="http://community.devexpress.com/blogs/markmiller/Quote_thumb_53A60577.png" width="244" border="0" height="164"></a></p> <p>&nbsp;</p> <p>With each of these key pairs, we’ve assigned two functionalities. The left key (e.g., <strong>Ctrl+[ </strong>) places the caret <em>between </em>the two delimiters (adding a field, so you can just press <strong>Enter </strong>to get to the right of the delimiter pair), and the right key (e.g., <strong>Ctrl+] </strong>) places the caret after the two delimiters (no fields needed). If there’s a selection, the left key will embed the selection within the delimiters (maintaining the original selection), and the right key will embed the selection within the delimiters, extending the selection to include the delimiters. Examples of all the bindings created in the webinar appear below.</p> <p>Given these key positions, the table below shows available functionality (the “<font color="#d19049">|</font>” character indicates the caret position and the blue background indicates the selection, <em>after </em>code is inserted):</p> <table cellpadding="2" cellspacing="0"> <tbody><tr> <td><strong><font color="#5e78e1" size="4">On a US Keyboard, press this:</font></strong></td> <td><font color="#5e78e1"></font></td> <td><strong><font color="#5e78e1" size="4">to get this: <br>(no selection)</font></strong></td> <td><font color="#5e78e1"></font></td> <td><strong><font color="#5e78e1" size="4">or to modify a selection:</font></strong></td> </tr> <tr> <td><font size="4">Ctrl+(</font></td> <td>&nbsp;</td> <td><font size="4">(<font color="#d19049">|</font>)</font></td> <td>&nbsp;</td> <td><font size="4">(<font style="background-color: rgb(173, 214, 255);">My Selection</font>)</font></td> </tr> <tr> <td><font size="4">Ctrl+)</font></td> <td>&nbsp;</td> <td><font size="4">()<font color="#d19049">|</font></font></td> <td>&nbsp;</td> <td><font style="background-color: rgb(173, 214, 255);" size="4">(My Selection)</font></td> </tr> <tr> <td><font size="4">Ctrl+[</font></td> <td>&nbsp;</td> <td><font size="4">[<font color="#d19049">|</font>]</font></td> <td>&nbsp;</td> <td><font size="4">[<font style="background-color: rgb(173, 214, 255);">My Selection</font>]</font></td> </tr> <tr> <td><font size="4">Ctrl+]</font></td> <td>&nbsp;</td> <td><font size="4">[]<font color="#d19049">|</font></font></td> <td>&nbsp;</td> <td><font style="background-color: rgb(173, 214, 255);" size="4">[My Selection]</font></td> </tr> <tr> <td><font size="4">Ctrl+Shift+{</font></td> <td>&nbsp;</td> <td><font size="4">{<font color="#d19049">|</font>}</font></td> <td>&nbsp;</td> <td><font size="4">{<font style="background-color: rgb(173, 214, 255);">My Selection</font>}</font></td> </tr> <tr> <td><font size="4">Ctrl+Shift+}</font></td> <td>&nbsp;</td> <td><font size="4">{}<font color="#d19049">|</font></font></td> <td>&nbsp;</td> <td><font style="background-color: rgb(173, 214, 255);" size="4">{My Selection}</font></td> </tr> <tr> <td><font size="4">Ctrl+Shift+&lt;</font></td> <td>&nbsp;</td> <td><font size="4">&lt;<font color="#d19049">|</font>&gt;</font></td> <td>&nbsp;</td> <td><font size="4">&lt;<font style="background-color: rgb(173, 214, 255);">My Selection</font>&gt;</font></td> </tr> <tr> <td><font size="4">Ctrl+Shift+&gt;</font></td> <td>&nbsp;</td> <td><font size="4">&lt;&gt;<font color="#d19049">|</font></font></td> <td>&nbsp;</td> <td><font style="background-color: rgb(173, 214, 255);" size="4">&lt;My Selection&gt;</font></td> </tr> <tr> <td><font size="4">Ctrl+;</font></td> <td>&nbsp;</td> <td><font size="4">"<font color="#d19049">|</font>"</font></td> <td>&nbsp;</td> <td><font size="4">"<font style="background-color: rgb(173, 214, 255);">My Selection</font>"</font></td> </tr> <tr> <td><font size="4">Ctrl+"</font></td> <td>&nbsp;</td> <td><font size="4">""<font color="#d19049">|</font></font></td> <td>&nbsp;</td> <td><font style="background-color: rgb(173, 214, 255);" size="4">“My Selection”</font></td> </tr> <tr> <td><font size="4">Ctrl+=</font></td> <td>&nbsp;</td> <td><font size="4">(<font color="#d19049">|</font>) =&gt; </font></td> <td>&nbsp;</td> <td><font size="4">(<font style="background-color: rgb(173, 214, 255);">My Selection</font>) =&gt; </font></td> </tr> </tbody></table> <p>You may notice a lack of symmetry with the Ctrl+= binding (there is no corresponding binding to place the caret to the right of the lambda operator). I omitted this binding due to a lack of a suitable neighboring key to the equals sign. If you want to correct this asymmetry and add your own binding, feel free to. After installing this plug-in, you may view or change the shortcuts bindings in the IDE\Shortcuts options page. The QuickPair bindings are in the Code\QuickPair folder:</p> <p><a href="http://community.devexpress.com/blogs/markmiller/QuickPairBindings_7FE28C5B.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="QuickPairBindings" alt="QuickPairBindings" src="http://community.devexpress.com/blogs/markmiller/QuickPairBindings_thumb_5EEF19B4.png" width="365" border="0" height="418"></a></p> <p>Have a request for a new feature? Email <a href="mailto:roryb@devexpress.com">roryb@devexpress.com</a> and let us know what you’d like to see us build for you on CodeRush Feature Wednesdays.</p></Text>
<HasAttachment>true</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>170</ID>
<Date>2011-05-30T10:16:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>ASP.NET Docking - Create Drag-and-drop Style Widgets with New Docking Controls (available now in v2011.1)</Subject>
<Text><p>@XAFers:</p>
<p>I believe that we could find a good place for it in XAF Web UI. We will definitely consider implementing this feature in the future. I have just logged a feature item internally for that. Unfortunately, I cannot provide any estimates or promises this time.</p>
<p>@Anuraag:</p>
<p>Not in this release.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>169</ID>
<Date>2011-05-30T06:10:00+04:00</Date>
<From>Anuraag Sanwal</From>
<Subject>ASP.NET Docking - Create Drag-and-drop Style Widgets with New Docking Controls (available now in v2011.1)</Subject>
<Text><p>awesome!</p>
<p>is this for MVC framework also?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>168</ID>
<Date>2011-05-27T17:06:00+04:00</Date>
<From>drew</From>
<Subject>ASP.NET Docking - Create Drag-and-drop Style Widgets with New Docking Controls (available now in v2011.1)</Subject>
<Text><p>@Mohsen +2..</p>
<p>..we have *everything* in place now for a more social edition of xaf. Just a few custom tweaks, a second output project format, and more inclusion for what DX already has, and DX will be FIRST out of the gate in this regard. A truly business-oriented socially-based application. The sky is the limit if we get this.</p>
<p>So many times have i been asked about something like this.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>167</ID>
<Date>2011-05-27T09:02:00+04:00</Date>
<From>John Botibol</From>
<Subject>WinForms RichEdit - Autocorrect and Hyperlink Detection (available now in 2011, volume 1)</Subject>
<Text><p>Great stuff, XtraRichEdit is coming on in leaps and bounds. Don't forget printing though, supporting different printer trays per section is a must for any WP tool (suggestion has been raised).</p>
<p>Love it!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>166</ID>
<Date>2011-05-27T02:03:00+04:00</Date>
<From>Rachel Reese (DevExpress)</From>
<Subject>WinForms RichEdit - Autocorrect and Hyperlink Detection (available now in 2011, volume 1)</Subject>
<Text><p>Thanks Steve! </p>
<p>Hedi, I'll pass that on. :) </p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>165</ID>
<Date>2011-05-27T01:36:00+04:00</Date>
<From>Hedi Guizani</From>
<Subject>WinForms RichEdit - Autocorrect and Hyperlink Detection (available now in 2011, volume 1)</Subject>
<Text><p>Should be used in report script editor !</p>
<p>Great job</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>164</ID>
<Date>2011-05-26T22:15:00+04:00</Date>
<From>Steve Sharkey</From>
<Subject>WinForms RichEdit - Autocorrect and Hyperlink Detection (available now in 2011, volume 1)</Subject>
<Text><p>Marvalus... spelling? &nbsp; &nbsp;;o)</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>163</ID>
<Date>2011-05-26T18:09:00+04:00</Date>
<From>Rachel Reese (DevExpress)</From>
<Subject>WinForms RichEdit - Autocorrect and Hyperlink Detection (available now in 2011, volume 1)</Subject>
<Text><p>Ha! So glad you both like it! :D</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>162</ID>
<Date>2011-05-26T17:40:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>HTML5 and XHTML Strict - New Doctypes Supported for ASP.NET Products (available now in v2011.1)</Subject>
<Text><p>M. Brekhof,</p>
<p>The HTML 5 and XHTML Strict is supported by both. But we only have project templates for MVC.</p>
<p>Thanks.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>161</ID>
<Date>2011-05-26T17:15:00+04:00</Date>
<From>Sigurd Decroos</From>
<Subject>WinForms RichEdit - Autocorrect and Hyperlink Detection (available now in 2011, volume 1)</Subject>
<Text><p>More of this goodness please :D!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>160</ID>
<Date>2011-05-26T17:08:00+04:00</Date>
<From>Scott Blood</From>
<Subject>WinForms RichEdit - Autocorrect and Hyperlink Detection (available now in 2011, volume 1)</Subject>
<Text><p>Excellent, </p>
<p>At this rate who is going to need Microsoft Word as a corporate tool, when i can just create a powerful document editor in seconds, ship it out and save £££'s on licenses from microsoft and more importantly save to PDF without the need of additional software (although i think office 2010 saves to PDF)</p>
<p>Am really really excited about the future of the RichEdit Control.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>159</ID>
<Date>2011-05-26T08:12:00+04:00</Date>
<From>Rachel Reese (DevExpress)</From>
<Subject>WinForms RichEdit - Autocorrect and Hyperlink Detection (available now in 2011, volume 1)</Subject>
<Text><p>We're adding autocorrect and hyperlink detection to the latest version of RichEdit! Your users can instantly see certain corrections as they type! </p> <h3>What is automatically corrected?</h3> <h4>Replacing text as you type</h4> <p>Automatically replace certain shortcuts with longer text (e.g., ty expanding automatically to thank you), or pictures provided in a list. You can add emoticons to a document, or simply enable your users to type more quickly. You can this in do two ways – either by using a list to keep track of replacements:&nbsp; </p> <div><div id="highlighter_892745" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">IAutoCorrectService service = richEditControl1.GetService&lt;IAutoCorrectService&gt;();</code></div><div class="line number2 index1 alt1"><code class="csharp keyword">if</code> <code class="csharp plain">(service != </code><code class="csharp keyword">null</code><code class="csharp plain">)</code></div><div class="line number3 index2 alt2"><code class="csharp plain">{</code></div><div class="line number4 index3 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">AutoCorrectReplaceInfoCollection replaceTable = </code><code class="csharp keyword">new</code> <code class="csharp plain">AutoCorrectReplaceInfoCollection();</code></div><div class="line number5 index4 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">replaceTable.Add(</code><code class="csharp string">"ty"</code><code class="csharp plain">, </code><code class="csharp string">"Thank you kindly for your support."</code><code class="csharp plain">);</code></div><div class="line number6 index5 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">replaceTable.Add(</code><code class="csharp keyword">new</code> <code class="csharp plain">AutoCorrectReplaceInfo(</code><code class="csharp string">":)"</code><code class="csharp plain">, </code></div><div class="line number7 index6 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">ResourceImageHelper.CreateBitmapFromResources(</code><code class="csharp string">"smile.png"</code><code class="csharp plain">, GetType().Assembly)));&nbsp; </code></div><div class="line number8 index7 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">replaceTable.Add(</code><code class="csharp string">"ich"</code><code class="csharp plain">, </code><code class="csharp string">"i can haz?"</code><code class="csharp plain">);</code></div><div class="line number9 index8 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">service.SetReplaceTable(replaceTable);</code></div><div class="line number10 index9 alt1"><code class="csharp plain">}</code></div></div></td></tr></tbody></table></div></div>
<p>or by handling the AutoCorrect event. For example, to automatically expand numbers into their written equivalents (e.g. 67 –&gt; sixty-seven), you could do the following: </p>
<div><div id="highlighter_859234" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div><div class="line number22 index21 alt1">22</div><div class="line number23 index22 alt2">23</div><div class="line number24 index23 alt1">24</div><div class="line number25 index24 alt2">25</div><div class="line number26 index25 alt1">26</div><div class="line number27 index26 alt2">27</div><div class="line number28 index27 alt1">28</div><div class="line number29 index28 alt2">29</div><div class="line number30 index29 alt1">30</div><div class="line number31 index30 alt2">31</div><div class="line number32 index31 alt1">32</div><div class="line number33 index32 alt2">33</div><div class="line number34 index33 alt1">34</div><div class="line number35 index34 alt2">35</div><div class="line number36 index35 alt1">36</div><div class="line number37 index36 alt2">37</div><div class="line number38 index37 alt1">38</div><div class="line number39 index38 alt2">39</div><div class="line number40 index39 alt1">40</div><div class="line number41 index40 alt2">41</div><div class="line number42 index41 alt1">42</div><div class="line number43 index42 alt2">43</div><div class="line number44 index43 alt1">44</div><div class="line number45 index44 alt2">45</div><div class="line number46 index45 alt1">46</div><div class="line number47 index46 alt2">47</div><div class="line number48 index47 alt1">48</div><div class="line number49 index48 alt2">49</div><div class="line number50 index49 alt1">50</div><div class="line number51 index50 alt2">51</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp keyword">void</code> <code class="csharp plain">richEditControl_AutoCorrect(</code><code class="csharp keyword">object</code> <code class="csharp plain">sender, AutoCorrectEventArgs e)</code></div><div class="line number2 index1 alt1"><code class="csharp plain">{</code></div><div class="line number3 index2 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">AutoCorrectInfo info = e.AutoCorrectInfo;</code></div><div class="line number4 index3 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">e.AutoCorrectInfo = </code><code class="csharp keyword">null</code><code class="csharp plain">;</code></div><div class="line number5 index4 alt2">&nbsp;</div><div class="line number6 index5 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">if</code> <code class="csharp plain">(info.Text.Length &lt;= 0 || info.Text[0] != </code><code class="csharp string">'%'</code><code class="csharp plain">)</code></div><div class="line number7 index6 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code><code class="csharp plain">;</code></div><div class="line number8 index7 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">for</code> <code class="csharp plain">(; ; )</code></div><div class="line number9 index8 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">{</code></div><div class="line number10 index9 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">if</code> <code class="csharp plain">(!info.DecrementStartPosition())</code></div><div class="line number11 index10 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code><code class="csharp plain">;</code></div><div class="line number12 index11 alt1">&nbsp;</div><div class="line number13 index12 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">if</code> <code class="csharp plain">(IsSeparator(info.Text[0]))</code></div><div class="line number14 index13 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code><code class="csharp plain">;</code></div><div class="line number15 index14 alt2">&nbsp;</div><div class="line number16 index15 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">if</code> <code class="csharp plain">(info.Text[0] == </code><code class="csharp string">'%'</code><code class="csharp plain">)</code></div><div class="line number17 index16 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">{</code></div><div class="line number18 index17 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">string</code> <code class="csharp plain">replaceString = CalculateFunction(info.Text);</code></div><div class="line number19 index18 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">if</code> <code class="csharp plain">(!String.IsNullOrEmpty(replaceString))</code></div><div class="line number20 index19 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">{</code></div><div class="line number21 index20 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">info.ReplaceWith = replaceString;</code></div><div class="line number22 index21 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">e.AutoCorrectInfo = info;</code></div><div class="line number23 index22 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">}</code></div><div class="line number24 index23 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code><code class="csharp plain">;</code></div><div class="line number25 index24 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">}</code></div><div class="line number26 index25 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">}</code></div><div class="line number27 index26 alt2"><code class="csharp plain">}</code></div><div class="line number28 index27 alt1">&nbsp;</div><div class="line number29 index28 alt2"><code class="csharp keyword">string</code> <code class="csharp plain">CalculateFunction(</code><code class="csharp keyword">string</code> <code class="csharp plain">name)</code></div><div class="line number30 index29 alt1"><code class="csharp plain">{</code></div><div class="line number31 index30 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">name = name.ToLower();</code></div><div class="line number32 index31 alt1">&nbsp;</div><div class="line number33 index32 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">if</code> <code class="csharp plain">(name.Length &gt; 2 &amp;&amp; name[0] == </code><code class="csharp string">'%'</code> <code class="csharp plain">&amp;&amp; name.EndsWith(</code><code class="csharp string">"%"</code><code class="csharp plain">))</code></div><div class="line number34 index33 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">{</code></div><div class="line number35 index34 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">int</code> <code class="csharp plain">value;</code></div><div class="line number36 index35 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">if</code> <code class="csharp plain">(Int32.TryParse(name.Substring(1, name.Length - 2), </code><code class="csharp keyword">out</code> <code class="csharp plain">value))</code></div><div class="line number37 index36 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">{</code></div><div class="line number38 index37 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">OrdinalBasedNumberConverter converter = </code></div><div class="line number39 index38 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">OrdinalBasedNumberConverter.CreateConverter(NumberingFormat.CardinalText, LanguageId.English);</code></div><div class="line number40 index39 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code> <code class="csharp plain">converter.ConvertNumber(value);</code></div><div class="line number41 index40 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">}</code></div><div class="line number42 index41 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">}</code></div><div class="line number43 index42 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code> <code class="csharp plain">String.Empty;</code></div><div class="line number44 index43 alt1"><code class="csharp plain">}</code></div><div class="line number45 index44 alt2">&nbsp;</div><div class="line number46 index45 alt1"><code class="csharp keyword">bool</code> <code class="csharp plain">IsSeparator(</code><code class="csharp keyword">char</code> <code class="csharp plain">ch)</code></div><div class="line number47 index46 alt2"><code class="csharp plain">{</code></div><div class="line number48 index47 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code> <code class="csharp plain">ch != </code><code class="csharp string">'%'</code> <code class="csharp plain">&amp;&amp; </code></div><div class="line number49 index48 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">(ch == </code><code class="csharp string">'\r'</code> <code class="csharp plain">|| ch == </code><code class="csharp string">'\n'</code> <code class="csharp plain">|| Char.IsPunctuation(ch) </code></div><div class="line number50 index49 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">|| Char.IsSeparator(ch) || Char.IsWhiteSpace(ch));</code></div><div class="line number51 index50 alt2"><code class="csharp plain">}</code></div></div></td></tr></tbody></table></div></div>
<p>You can use either, or both, methods in your code. They will have the same effect. </p>
<p><a href="http://community.devexpress.com/blogs/rachelreese/replaceasyoutype_79F735ED.gif"><img style="display: inline;" title="replaceasyoutype" alt="replaceasyoutype" src="http://community.devexpress.com/blogs/rachelreese/replaceasyoutype_thumb_3CF3045B.gif" width="605" height="480"></a></p>
<h4>Misspelled words, using Spellchecker Suggestions</h4>
<p>If the Spellchecker control is included in your document, and you misspell a word which has only one correction suggestion, it will be automatically replaced. </p>
<p>For example, previously: if you had typed sugestions, noticed the red squiggly line, and right-clicked for options, you'd have seen only one: suggestions. </p>
<p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/rachelreese/image_3DBA9D91.png" width="410" border="0" height="157"></p>
<p>With autocorrect enabled, this correction will happen instantly. </p>
<p><a href="http://community.devexpress.com/blogs/rachelreese/spellcheck_0E53C447.gif"><img style="display: inline;" title="spellcheck" alt="spellcheck" src="http://community.devexpress.com/blogs/rachelreese/spellcheck_thumb_00154B57.gif" width="584" height="474"></a></p>
<p>If you have Spellchecker enabled, all you need to do, is add: </p>
<div><div id="highlighter_58277" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">richEditControl.Options.AutoCorrect.UseSpellCheckerSuggestions = </code><code class="csharp keyword">true</code><code class="csharp plain">;</code></div></div></td></tr></tbody></table></div></div>
<h4>Hyperlinks</h4>
<p>And hyperlinks are automatically recognized and converted. Simply type <a href="http://www.devexpress.com">www.devexpress.com</a> or <a href="http://www.devexpress.com">http://www.devexpress.com</a> into your RichEdit document – we'll automatically link them up for you! </p>
<p><a href="http://community.devexpress.com/blogs/rachelreese/hyperlinks_58DB0221.gif"><img style="display: inline;" title="hyperlinks" alt="hyperlinks" src="http://community.devexpress.com/blogs/rachelreese/hyperlinks_thumb_5F8E0BA4.gif" width="584" height="474"></a></p>
<p>All you need to do, is set: </p>
<div><div id="highlighter_57028" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">richEditControl1.Options.AutoCorrect.DetectUrls = </code><code class="csharp keyword">true</code><code class="csharp plain">;</code></div></div></td></tr></tbody></table></div></div>
<h4>Two Initial Capitals</h4>
<p>When you type HEllo, it will be instantly updated to Hello. Like so:</p>
<p><a href="http://community.devexpress.com/blogs/rachelreese/twocaps10_142E67E0.gif"><img style="display: inline;" title="twocaps[10]" alt="twocaps[10]" src="http://community.devexpress.com/blogs/rachelreese/twocaps10_thumb_58029C37.gif" width="584" height="474"></a></p>
<p>It only takes one line to enable this: </p>
<div><div id="highlighter_851419" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">richEditControl1.Options.AutoCorrect.CorrectTwoInitialCapitals = </code><code class="csharp keyword">true</code><code class="csharp plain">;</code></div></div></td></tr></tbody></table></div></div>
<p>For more information, please check out our Demo.</p></Text>
<HasAttachment>true</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>158</ID>
<Date>2011-05-26T04:08:00+04:00</Date>
<From>M. Brekhof</From>
<Subject>HTML5 and XHTML Strict - New Doctypes Supported for ASP.NET Products (available now in v2011.1)</Subject>
<Text><p>Do you mean only the ASP.NET MVC extensions get xhtml1 strict and html5 support, but the rest of ASP.NET Ajax controls don't?</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>157</ID>
<Date>2011-05-25T17:19:00+04:00</Date>
<From>Mark Williams</From>
<Subject>ASP.NET Docking - Create Drag-and-drop Style Widgets with New Docking Controls (available now in v2011.1)</Subject>
<Text><p>This is really exciting!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>156</ID>
<Date>2011-05-25T17:10:00+04:00</Date>
<From>Steven Rasmussen</From>
<Subject>ASP.NET Docking - Create Drag-and-drop Style Widgets with New Docking Controls (available now in v2011.1)</Subject>
<Text><p>I've gotta say this looks pretty sweet! &nbsp;I just need to find a way to use it now :)</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>155</ID>
<Date>2011-05-25T17:01:00+04:00</Date>
<From>Mohsen Benkhellat</From>
<Subject>ASP.NET Docking - Create Drag-and-drop Style Widgets with New Docking Controls (available now in v2011.1)</Subject>
<Text><p>Let's hope it is included in XAF for web layout asap.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>154</ID>
<Date>2011-05-25T08:30:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET Docking - Create Drag-and-drop Style Widgets with New Docking Controls (available now in v2011.1)</Subject>
<Text><p><a href="http://community.devexpress.com/blogs/aspnet/aspxdocking_2C6BF7A6.png"><img style="background-image: none; border-width: 0px; margin: 0px 0px 10px 14px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px;" title="aspxdocking" alt="aspxdocking" src="http://community.devexpress.com/blogs/aspnet/aspxdocking_thumb_24745544.png" width="307" align="right" border="0" height="178"></a>Check out these slick new ASP.NET Docking Controls that are available now in DXperience v2011 volume 1. </p>
<h3>Benefits</h3>
<p>Our new ASP.NET Docking controls give you the ability to create a 'widgets' style layout with drag-and-drop functionality for your website. Other key benefits and features include:</p>
<ul>
<li>Custom web page layout </li>
<li>Intuitive interface </li>
<li>Smooth drag-and-drop&nbsp; </li>
<li>Extensive Client-side API and events </li>
<li>Callbacks (AJAX) support </li>
<li>Beautiful themes provided </li>
<li>Customize styles </li>
<li>Flexible layouts with standalone docking controls - big win for you… more on this below </li>
<li>Cross-browser support </li></ul>
<h3>Introduction Video</h3>
<p>Watch the <a href="http://tv.devexpress.com/#ASPxDockingSuiteIntro" target="_blank">'ASP.NET Docking Introduction' video</a> and learn about the ASPxDocking controls' benefits and features for you:</p>
<p><a href="http://tv.devexpress.com/#ASPxDockingSuiteIntro" target="_blank"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="DevExpress ASP.NET Docking Suite" alt="DevExpress ASP.NET Docking Suite" src="http://community.devexpress.com/blogs/aspnet/image_378571EC.png" width="546" border="0" height="310"></a></p>
<h3>ASP.NET Docking Controls</h3>
<p>The new ASP.NET Docking controls are called <a href="http://www.devexpress.com/Subscriptions/DXperience/WhatsNew2011v1/index.xml?page=48" target="_blank">ASPxDocking</a> and they will be released as part of the <a href="http://devexpress.com/aspxperience" target="_blank">ASPxperience Library</a>.</p>
<p>ASPxDocking offers 3 new stand-alone controls that have been design to interoperate well:</p>
<ul>
<li>ASPxDockPanel - As a content place holder, this control holds your content. It can be dragged among different 'dock zones'. Or it can float like our <a href="http://devexpress.com/ASPxPopupControl" target="_blank">ASPxPopupControl</a> </li>
<li>ASPxDockZone - A container control for dock panels. The ASPxDockPanel can be docked within the ASPxDockZones. </li>
<li>ASPxDockManager - A non-visual control that allows you as the web developer to manage the central layout and handle all the events </li></ul>
<p>Together the three components allow your end-users to move content panels between specific regions (dock zones) of a web page. A dock panel can either be docked to a dock zone or made to float. Dock zones can be placed within any section of a page; orientation and size is fully customizable. ASPxDockManager allows you to provide centralized programmatic control of all dock panels and dock zones contained within a page.</p>
<h3>Advantage: Flexible Layout Customization</h3>
<p>A key advantage for you is that the ASPxDocking controls are standalone. Therefore, our docking solution does not require you to place the dock panels and zones into some parent layout control. </p>
<p>Why is this important? Because you can place standalone panels, zones and manager docking controls on <em><strong>different web pages</strong></em>!</p>
<p>Here's an example of how you can place the controls on multiple pages:</p>
<ul>
<li>A child page with a panel and manager docking controls </li>
<li>and its master page can have a zone control </li>
<li>and a user control instantiated inside this page can contain one more panel </li></ul>
<p>And all of the docking controls will work nicely with each other and give you a 'single layout' capability across multiple web pages!</p>
<h3>Features</h3>
<p>Watch the <a href="http://tv.devexpress.com/#ASPxDockingSuiteIntro" target="_blank">'ASP.NET Docking Introduction' video</a> to see many of these key features in action:</p>
<ul>
<li>Forbidden zones </li>
<li>Load content via callbacks </li>
<li>Runtime layout customization </li>
<li>Client-side events and API </li>
<li>Server-side functionality - for example, the AllowedDockState property lets you change a panel's docking behavior on the server side </li>
<li>Server-side events </li></ul>
<p>&nbsp;</p>
<p>What do you think of the new ASPxDocking controls? Drop me a line below with your thoughts, thanks!</p>
<div class="dxperience-blog-block">
<h4>Save time and money...</h4>
<p>Save time and money with high quality pre-built components for ASP.NET, Windows Forms, WPF, Silverlight and VCL as well as IDE Productivity Tools and Business Application Frameworks, all backed by world-class service and support. Our technologies help you build your best, see complex software with greater clarity, increase your productivity and create stunning applications for Windows and Web in the shortest possible time.</p>
<p>Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p></div>
<p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p></Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>153</ID>
<Date>2011-05-24T15:00:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>Attend Live Webinar And Question The DevExpress ASP.NET Team</Subject>
<Text><p>Join me and the DevExpress ASP.NET team on Tuesday, May 31st, 2011 at 10am PDT for your chance to:</p> <p>1. See DevExpress ASP.NET v2011.1 features and products</p> <ol></ol> <p><a href="http://www.devexpress.com/Subscriptions/DXperience/WhatsNew2011v1/" target="_blank"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="download101" alt="download101" src="http://community.devexpress.com/blogs/aspnet/download101_132140AF.jpg" width="278" border="0" height="177"></a></p> <p>2. Ask the DevExpress ASP.NET team any questions about features or issues:</p> <p>&nbsp;</p> <h3>Register Now</h3> <p>Click this link and register for the upcoming webinar now:</p> <p><a title="https://www3.gotomeeting.com/join/378604222/106572924" href="https://www3.gotomeeting.com/join/378604222/106572924">https://www3.gotomeeting.com/register/378604222</a></p> <p><a href="https://www3.gotomeeting.com/register/378604222" target="_blank"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Register for Ask the ASP.NET Team webinar" alt="Register for Ask the ASP.NET Team webinar" src="http://community.devexpress.com/blogs/aspnet/image_1968173D.png" width="660" border="0" height="171"></a></p> <p>Don't miss this chance to interact live with the DevExpress ASP.NET team and ask your questions. See you on the webinar!</p> <div class="dxperience-blog-block"> <h4>Save time and money...</h4> <p>Save time and money with high quality pre-built components for ASP.NET, Windows Forms, WPF, Silverlight and VCL as well as IDE Productivity Tools and Business Application Frameworks, all backed by world-class service and support. Our technologies help you build your best, see complex software with greater clarity, increase your productivity and create stunning applications for Windows and Web in the shortest possible time.</p> <p>Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p> </div> <p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p></Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>152</ID>
<Date>2011-05-23T13:10:00+04:00</Date>
<From>stephen Ebichondo</From>
<Subject>The Code Project 2011 Members Choice Awards</Subject>
<Text><p>Congratulations the DevExpress Team</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>151</ID>
<Date>2011-05-23T10:12:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET Upload Control (WebForms & MVC) - Upload Large Files using less RAM! (available now in v2011.1)</Subject>
<Text><p>Paul,</p>
<p>We'll certainly consider it, thanks.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>150</ID>
<Date>2011-05-23T09:52:00+04:00</Date>
<From>Stefan Koell</From>
<Subject>WinForms Ribbon Control – MacOffice Paint Style and Back Stage View Control (available now in v2011, volume 1)</Subject>
<Text><p>Can someone tell me how to make use of the new backstage control? I downloaded the beta and I see the backstage control in the toolbox but how to wire things up. When I click the application menu, nothing happens...</p>
<p>Thanks</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>149</ID>
<Date>2011-05-23T05:11:00+04:00</Date>
<From>Vassilios Pallis</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>I followed exactly the example but i cannot get it to work. The connection is always empty. You don't mention anything about connection string and how to build it.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>148</ID>
<Date>2011-05-19T16:50:00+04:00</Date>
<From>Julian Bucknall (DevExpress)</From>
<Subject>11.1 Feature Days (from TechEd) – New ASP.NET MVC Reporting Extensions</Subject>
<Text><p>Nicholas: We released the first beta of DXperience this morning. That means we're on the countdown to the actual release. As to how quickly, well it does depend on feedback from our customers and so on.</p>
<p>Cheers, Julian</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>147</ID>
<Date>2011-05-19T15:25:00+04:00</Date>
<From>Nick Olsen</From>
<Subject>11.1 Feature Days (from TechEd) – New ASP.NET MVC Reporting Extensions</Subject>
<Text><p>Will the MVC reports have drill down capability? &nbsp;Do you have an estimated release date for v2011.1?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>146</ID>
<Date>2011-05-18T22:25:00+04:00</Date>
<From>Seth Juarez (DevExpress)</From>
<Subject>11.1 Feature Days (from TechEd) – New ASP.NET MVC Reporting Extensions</Subject>
<Text><blockquote>
<p>Update: Available now for <a href="http://www.devexpress.com/FreeEval" target="_blank">download</a> are the <a href="http://devexpress.com/asp" target="_blank">DevExpress ASP.NET</a> MVC Reporting Extensions. See a live online demo here: <a title="http://dxpr.es/kQ94or" href="http://dxpr.es/kQ94or">http://dxpr.es/kQ94or</a></p>
</blockquote>
<p>For our third day here at TechEd, I thought I would show you the new ASP.NET MVC reporting extensions coming in our v2011.1 release. These include a report viewer extension as well as a report toolbar extension.</p> <p>There are a couple of things to keep in mind when using these extensions. The first is how you decided to pass the report from the controller to the view. In ASP.NET MVC you can use any of the traditional models available: whether it be passed to the View through the model or the ViewData dictionary exposed to the View. Here is an example of the former:</p> <pre></pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 1: <span style="color: rgb(0, 0, 255);">public</span> ActionResult Index()
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 2: {
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 3: ViewBag.Message = "<span style="color: rgb(139, 0, 0);">Welcome to DevExpress Extensions for ASP.NET MVC!</span>";
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 4: <span style="color: rgb(0, 0, 255);">return</span> View(<span style="color: rgb(0, 0, 255);">new</span> ProductReport());
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 5: }</pre>
<p>The next thing to keep in mind is how the ReportViewer extension actually works (in conjunction with the report toolbar extension). Since the report viewer uses asynchronous requests to the server in order to refresh its content, the report viewer extension is best used when exposed in its own partial view. The following snippet shows the partial view markup/code used to generate the viewer. Notice that the Model property inside of the partial view corresponds to the model passed to the View from the Index controller method above.</p>
<pre></pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 1: @Html.DevExpress().ReportViewer(settings =&gt;
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 2: {
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 3: settings.Name = "<span style="color: rgb(139, 0, 0);">reportViewer</span>";
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 4: settings.Report = (DevExpress.XtraReports.UI.XtraReport)Model;
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 5: settings.CallbackRouteValues = <span style="color: rgb(0, 0, 255);">new</span> { Controller = "<span style="color: rgb(139, 0, 0);">Home</span>", Action = "<span style="color: rgb(139, 0, 0);">ReportViewerPartial</span>" };
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 6: settings.ExportRouteValues = <span style="color: rgb(0, 0, 255);">new</span> { Controller = "<span style="color: rgb(139, 0, 0);">Home</span>", Action = "<span style="color: rgb(139, 0, 0);">ReportViewerExportTo</span>" };
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 7: }).GetHtml()</pre>
<p>The first two settings above are pretty self explanatory: they define the name of the control along with the report source (in this case the actual Model property in the View). The second two have to do primarily with how the report viewer interacts with the controller to refresh itself. The CallBackRouteValuse setting deals primarily with refreshing elements within the report as it is displayed while the ExportRouteValues deal primarily with the task of exporting the actual report. The following code snippet highlights this distinction:</p>
<pre></pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 1: <span style="color: rgb(0, 0, 255);">public</span> ActionResult ReportViewerPartial()
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 2: {
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 3: <span style="color: rgb(0, 0, 255);">return</span> PartialView("<span style="color: rgb(139, 0, 0);">_reportViewer</span>", <span style="color: rgb(0, 0, 255);">new</span> ProductReport());
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 4: }
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 5:
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 6: <span style="color: rgb(0, 0, 255);">public</span> ActionResult ReportViewerExportTo()
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 7: {
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 8: <span style="color: rgb(0, 0, 255);">return</span> ReportViewerExtension.ExportTo(<span style="color: rgb(0, 0, 255);">new</span> ProductReport());
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 9: }</pre>
<p>Notice on line 3 in the snippet above that the controller actually returns the partial view entitled “_reportViewer” that contains the report viewer extension as shown above.</p>
<p>The last portion is to actually create a view that consumes the report viewers partial and adds the toolbar functionality:</p>
<pre></pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 1: @{
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 2: ViewBag.Title = "<span style="color: rgb(139, 0, 0);">Home Page</span>";
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 3: }
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 4:
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 5: &lt;div <span style="color: rgb(0, 0, 255);">class</span>="<span style="color: rgb(139, 0, 0);">title</span>"&gt;@ViewBag.Message&lt;/div&gt;
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 6: &lt;div id="<span style="color: rgb(139, 0, 0);">report</span>"&gt;
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 7: @Html.DevExpress().ReportToolbar(settings =&gt;
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 8: {
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 9: settings.Name = "<span style="color: rgb(139, 0, 0);">toolbar1</span>";
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 10: settings.ReportViewerName = "<span style="color: rgb(139, 0, 0);">reportViewer</span>";
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 11: }).GetHtml()
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 12:
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 13: @Html.Partial("<span style="color: rgb(139, 0, 0);">_reportViewer</span>")
</pre><pre style="background-color: rgb(255, 255, 255); margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"> 14: &lt;/div&gt;</pre>
<p>The only significant snippet to consider here is found on line 10. It corresponds the the actual name of the report viewer that is being rendered.</p>
<p>Here is the example from above fully rendered (elided bottom portion for brevity):</p>
<p><a href="http://community.devexpress.com/blogs/seth/mvc_38EEB139.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px;" title="mvc" alt="mvc" src="http://community.devexpress.com/blogs/seth/mvc_thumb_5B633FF4.png" width="391" border="0" height="414"></a></p>
<p>This is indeed great news for those of us who use MVC heavily.</p>
<p>As always, if there are any comments and/or questions, feel free to get a hold of me!</p>
<p>Seth Juarez
<br>Email: <a href="mailto:sethj@devexpress.com">sethj@devexpress.com</a>
<br>Twitter: <a href="http://twitter.com/sethjuarez">@SethJuarez</a></p>
<div style="border-left: 1px solid rgb(235, 235, 235); padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top: 1px solid rgb(235, 235, 235); border-right: 1px solid rgb(235, 235, 235);">
<h4 style="padding-left: 10px; padding-right: 10px;">DXperience? What's That?</h4>
<p style="padding-left: 10px; padding-right: 10px;">DXperience is the .NET developer's secret weapon. Get full access to a complete suite of professional components that let you instantly drop in new features, designer styles and fast performance for your applications. Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p>
</div></Text>
<HasAttachment>true</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>145</ID>
<Date>2011-05-18T19:15:00+04:00</Date>
<From>Rachel Reese (DevExpress)</From>
<Subject>RichEdit - More improvements to syntax highlighting! (available now in v2011, volume 1)</Subject>
<Text><p>Nate -- Maybe ;) </p>
<p>Sigurd -- That's a great idea! </p>
<p>Carl, Reverove: Thanks! </p>
<p>Robert -- I think maybe there are a few ways to improve it without exactly using Intellisense... ;) </p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>144</ID>
<Date>2011-05-18T14:55:00+04:00</Date>
<From>Robert Fuchs</From>
<Subject>RichEdit - More improvements to syntax highlighting! (available now in v2011, volume 1)</Subject>
<Text><p>@Nate: XtraReports script editor will only get awesomeness when it gets some sort of Intellisense. Nobody wants to write code/scripts these days without it - especially for those power-endusers it would be a dream.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>143</ID>
<Date>2011-05-18T14:13:00+04:00</Date>
<From>Reverove Likia</From>
<Subject>RichEdit - More improvements to syntax highlighting! (available now in v2011, volume 1)</Subject>
<Text><p>Nice! I saw many enhancements implemented in XPO and RichEdit... Waiting for some breakthroughs in XtraReport... go on!!!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>142</ID>
<Date>2011-05-18T12:14:00+04:00</Date>
<From>James Birnie</From>
<Subject>ASP.NET PDF/XLS Export Speed Increased! (available now in v2011.1)</Subject>
<Text><p>Great work team!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>141</ID>
<Date>2011-05-17T23:58:00+04:00</Date>
<From>Sigurd Decroos</From>
<Subject>RichEdit - More improvements to syntax highlighting! (available now in v2011, volume 1)</Subject>
<Text><p>Cool! Now provide a class to highlight SQL statements please, I could use it TODAY in my app!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>140</ID>
<Date>2011-05-17T19:44:00+04:00</Date>
<From>Nate Laff</From>
<Subject>RichEdit - More improvements to syntax highlighting! (available now in v2011, volume 1)</Subject>
<Text><p>I sense awesomeness coming for XtraReports script editor :D</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>139</ID>
<Date>2011-05-17T10:09:00+04:00</Date>
<From>Rachel Reese (DevExpress)</From>
<Subject>RichEdit - More improvements to syntax highlighting! (available now in v2011, volume 1)</Subject>
<Text><p>We've added the ability to display the text in the RichEditor with different fonts and colors according to categories you've set up before loading your document. By splitting the text into tokens of certain categories (e.g. – Comments), and categorizing their types, you can highlight a whole document in just a few steps.</p> <p>For example, to show a code document with the comments highlighted, you'd need to create the parsing and highlighting service, using the ISyntaxHighlightService interface. This will require you to implement the Execute method. Basically, you'll need to get the set of tokens (i.e. – things to be highlighted) from the text, then loop through them, and highlight each one. </p> <div><div id="highlighter_867257" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp keyword">public</code> <code class="csharp keyword">void</code> <code class="csharp plain">Execute()</code></div><div class="line number2 index1 alt1"><code class="csharp plain">{</code></div><div class="line number3 index2 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">string</code> <code class="csharp plain">newText = richEditControl1.Text;</code></div><div class="line number4 index3 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">Document document = richEditControl1.Document;</code></div><div class="line number5 index4 alt2">&nbsp;</div><div class="line number6 index5 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp comments">// Use DevExpress.CodeParser to parse text into tokens.</code></div><div class="line number7 index6 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">TokenCollection highlightTokens = CSharpTokensHelper.GetTokens(newText);</code></div><div class="line number8 index7 alt1">&nbsp;</div><div class="line number9 index8 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">List&lt;SyntaxHighlightToken&gt; syntaxTokens = </code><code class="csharp keyword">new</code> <code class="csharp plain">List&lt;SyntaxHighlightToken&gt;(highlightTokens.Count);</code></div><div class="line number10 index9 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">Color backColor = richEditControl1.ActiveView.BackColor;</code></div><div class="line number11 index10 alt2">&nbsp;</div><div class="line number12 index11 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">foreach</code> <code class="csharp plain">(Token token </code><code class="csharp keyword">in</code> <code class="csharp plain">highlightTokens)</code></div><div class="line number13 index12 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">{</code></div><div class="line number14 index13 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">TokenCategory category = ((CategorizedToken)token).Category;</code></div><div class="line number15 index14 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">if</code> <code class="csharp plain">(category == TokenCategory.Comment)</code></div><div class="line number16 index15 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">syntaxTokens.Add(SetTokenColor(token, </code></div><div class="line number17 index16 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">new</code> <code class="csharp plain">SyntaxHighlightProperties { ForeColor = Color.Green }, backColor));</code></div><div class="line number18 index17 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">}</code></div><div class="line number19 index18 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">document.ApplySyntaxHighlight(syntaxTokens);</code></div><div class="line number20 index19 alt1"><code class="csharp plain">}</code></div></div></td></tr></tbody></table></div></div>
<p>Where the SetTokenColor method looks like this: </p>
<div><div id="highlighter_162884" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">SyntaxHighlightToken SetTokenColor(Token token, SyntaxHighlightProperties foreColor, Color backColor)</code></div><div class="line number2 index1 alt1"><code class="csharp plain">{</code></div><div class="line number3 index2 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">if</code> <code class="csharp plain">(richEditControl1.Document.Paragraphs.Count &lt; token.Range.Start.Line)</code></div><div class="line number4 index3 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code> <code class="csharp keyword">null</code><code class="csharp plain">;</code></div><div class="line number5 index4 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">int</code> <code class="csharp plain">paragraphStart = </code></div><div class="line number6 index5 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">DocumentHelper.GetParagraphStart(richEditControl1.Document.Paragraphs[token.Range.Start.Line-1]);</code></div><div class="line number7 index6 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">int</code> <code class="csharp plain">tokenStart = paragraphStart + token.Range.Start.Offset - 1;</code></div><div class="line number8 index7 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">if</code> <code class="csharp plain">(token.Range.End.Line != token.Range.Start.Line)</code></div><div class="line number9 index8 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">paragraphStart = </code></div><div class="line number10 index9 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">DocumentHelper.GetParagraphStart(richEditControl1.Document.Paragraphs[token.Range.End.Line-1]);</code></div><div class="line number11 index10 alt2">&nbsp;</div><div class="line number12 index11 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">int</code> <code class="csharp plain">tokenEnd = paragraphStart + token.Range.End.Offset - 1;</code></div><div class="line number13 index12 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code> <code class="csharp keyword">new</code> <code class="csharp plain">SyntaxHighlightToken(tokenStart, tokenEnd - tokenStart, foreColor);</code></div><div class="line number14 index13 alt1"><code class="csharp plain">}</code></div></div></td></tr></tbody></table></div></div>
<p>Running this on the handy Form1.cs code file I just happen to have nearby, I see the following: </p>
<p><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/rachelreese/image9_319B6488.png" width="815" border="0" height="487"></p>
<p>For full text highlighting, check out <a href="http://www.devexpress.com/Support/Center/e/E2993.aspx" target="_blank">E2993: Syntax highlighting using DevExpress CodeParser and Syntax Highlight tokens</a>. That'll look a little more like this:&nbsp; </p>
<p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://community.devexpress.com/blogs/rachelreese/image_4DA5FF49.png" width="791" border="0" height="844"></p>
<p>Have fun coding, everyone! :-)</p></Text>
<HasAttachment>true</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>138</ID>
<Date>2011-05-16T15:16:00+04:00</Date>
<From>Paul Barnes</From>
<Subject>ASP.NET Upload Control (WebForms & MVC) - Upload Large Files using less RAM! (available now in v2011.1)</Subject>
<Text><p>Thanks for the quick reply. Since it can not be supported because of it being browser specific, can I suggest it be considered in the advanced mode that uses silverlight?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>136</ID>
<Date>2011-05-13T21:50:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET Upload Control (WebForms & MVC) - Upload Large Files using less RAM! (available now in v2011.1)</Subject>
<Text><p>Hi Paul,</p>
<p>I recommend creating a suggestion for that.</p>
<p>Also, this may help you but it's browser-specific so not the best sln, imo: <a rel="nofollow" target="_new" href="http://www.devexpress.com/Support/Center/p/Q321619.aspx">www.devexpress.com/.../Q321619.aspx</a></p>
<p>Thanks.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>135</ID>
<Date>2011-05-13T21:48:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET Upload Control (WebForms & MVC) - Upload Large Files using less RAM! (available now in v2011.1)</Subject>
<Text><p>Luke and Paul,</p>
<p>Thanks! </p>
<p>We didn't want to call it 'Silverlight Advanced' because we may still improve this feature by using other technologies like html5, SL, or flash in the future. We'll use the one that gives you the most benefits. :)</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>134</ID>
<Date>2011-05-13T21:16:00+04:00</Date>
<From>Paul Barnes</From>
<Subject>ASP.NET Upload Control (WebForms & MVC) - Upload Large Files using less RAM! (available now in v2011.1)</Subject>
<Text><p>Mehul, a few of my clients have asked for the ability to drag a file from windows explorer into an aspxuploadcontrol. Has this abilty ever been discussed with you guys? Thanks.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>133</ID>
<Date>2011-05-12T19:25:00+04:00</Date>
<From>Luke Grews</From>
<Subject>ASP.NET Upload Control (WebForms & MVC) - Upload Large Files using less RAM! (available now in v2011.1)</Subject>
<Text><p>Great feature,</p>
<p>But I would agree with Denny on SL Mode.</p>
<p>Then Silverlight requirement will be implied.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>132</ID>
<Date>2011-05-12T16:57:00+04:00</Date>
<From>Denny Upadhyaya</From>
<Subject>ASP.NET Upload Control (WebForms & MVC) - Upload Large Files using less RAM! (available now in v2011.1)</Subject>
<Text><p>Very nice feature. You should rename the Mode to : Standard and Silverlight Enhanced since that is a requirement</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>131</ID>
<Date>2011-05-12T08:08:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET Upload Control (WebForms & MVC) - Upload Large Files using less RAM! (available now in v2011.1)</Subject>
<Text><p>Check out the upcoming feature of our ASP.NET Upload Control that lets your end-users upload very large files without having your web server use lots of memory (<a href="http://en.wikipedia.org/wiki/Random-access_memory" target="_blank">RAM</a>). And there are other benefits too. </p> <p>Watch my 'Upload Big Files' video to learn about the new feature in DXperience v2011 volume 1:</p> <p><a href="http://tv.devexpress.com/#ASPUploadBigFiles" target="_blank"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Video: ASP.NET Upload Large Files" alt="Video: ASP.NET Upload Large Files" src="http://community.devexpress.com/blogs/aspnet/image_4589967D.png" width="546" border="0" height="310"></a></p> <h3>ASP.NET WebForms &amp; MVC!</h3> <p>First, you'll be happy to know that the new 'upload large files' feature will be supported by both of our ASP.NET Upload WebForms control and ASP.NET MVC Upload Extension!</p> <h3>New Property</h3> <p>A new property is being introduced for our ASP.NET Upload Control and MVC Upload Extension called <strong>UploadMode</strong>. And it has 2 modes that determine how the upload control will behave and render:</p> <ul> <li><strong>Standard</strong> - Current/old mode - the upload control will send a file in one request. For small files, this is fine but if the file is very large then it can stress your web server as it has to load the entire file in memory </li> <li><strong>Advanced</strong> - New mode - the upload control will send a file using small packets. This gives you a few benefits… </li> </ul> <p>...Benefits? Yes there are some pluses to 'Advanced' mode and one small caveat. </p> <h3>Advanced Mode Benefits</h3> <p>There are major benefits that you get when using the new 'Advanced' mode for uploading:</p> <h4>1. Upload Large Files</h4> <p>Upload large (2 gigabyte) files without using a huge amount of memory on your web server because the 'Advanced' mode uploads the file in small packets. The default PackedSize is 200 kilobytes and it saves these bytes to a temporary folder on your server (default is "~\App_Data\UploadTemp\").</p> <p>When the upload has finished, you can access this file using the file stream:</p> <div><div id="highlighter_543802" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp keyword">protected</code> <code class="csharp keyword">void</code> <code class="csharp plain">ASPxUploadControl1_FileUploadComplete(</code><code class="csharp keyword">object</code> <code class="csharp plain">sender, FileUploadCompleteEventArgs e) { </code></div><div class="line number2 index1 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">using</code><code class="csharp plain">(Stream stream = e.UploadedFile.FileContent)&nbsp; { </code></div><div class="line number3 index2 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp comments">//stream.Read(...); </code></div><div class="line number4 index3 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">} </code></div><div class="line number5 index4 alt2"><code class="csharp plain">}</code></div></div></td></tr></tbody></table></div></div>
<p>Or save the file using the <strong>SaveAs</strong> method:</p>
<div><div id="highlighter_206763" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp keyword">protected</code> <code class="csharp keyword">void</code> <code class="csharp plain">ASPxUploadControl1_FileUploadComplete(</code><code class="csharp keyword">object</code> <code class="csharp plain">sender, DevExpress.Web.ASPxUploadControl.FileUploadCompleteEventArgs e) {</code></div><div class="line number2 index1 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp comments">// don’t use FileBytes with Large Files!</code></div><div class="line number3 index2 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp comments">// byte[] a = e.UploadedFile.FileBytes;</code></div><div class="line number4 index3 alt1"><code class="csharp spaces">&nbsp;</code>&nbsp;</div><div class="line number5 index4 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">string</code> <code class="csharp plain">filePath = Server.MapPath(</code><code class="csharp string">"~/uploads/"</code> <code class="csharp plain">+ e.UploadedFile.FileName);</code></div><div class="line number6 index5 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">e.UploadedFile.SaveAs(filePath);</code></div><div class="line number7 index6 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp comments">// DoProcessUploadedFile(filePath);</code></div><div class="line number8 index7 alt1"><code class="csharp plain">}</code></div></div></td></tr></tbody></table></div></div>
<h4>2. Client-side Validation</h4>
<p>The new 'Advanced' mode will validate the file size and extension on the client-side without sending files to the web server. This prevents unnecessary traffic to the web server. And to ensure proper validation and give you extra protection, our ASP.NET upload control will also perform a server-side validation check once the file has passed client-side validation.</p>
<h4>3. Progress Bar in Medium Trust</h4>
<p>'Advanced' mode also allows you to display the file upload progress bar even in web environments that only allow medium-trust. Learn more about 'medium-trust' ASP.NET applications from <a href="http://msdn.microsoft.com/en-us/library/ms998341.aspx#paght000020_mediumtrustsummary" target="_blank">this MSDN article</a>. In general: </p>
<blockquote>
<p>Medium trust will place a number of restrictions on an application, including limiting an application’s file access to within the virtual directory where the application lives. - <a href="http://odetocode.com/blogs/scott/archive/2005/10/28/medium-trust-asp-net-applications.aspx" target="_blank">K. Scott Allen</a></p>
</blockquote>
<h4>4. Prevent DoS Attacks</h4>
<p>With the 'Advanced' mode, you also don't need to set a very large 'maxRequestLength' value in your web.config file. The '<a href="http://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.maxrequestlength.aspx" target="_blank">maxRequestLength</a>' property specifies the limit for the buffering threshold of the input stream. For example, this limit can be used to prevent denial of service (<a href="http://en.wikipedia.org/wiki/Denial-of-service_attack" target="_blank">DoS</a>) attacks that are caused by users who post large files to the server.</p>
<h3>Silverlight Required</h3>
<p>The small caveat to the new 'Advanced' mode is that it requires Silverlight (version 3 and above) to render the upload control. This will require your end-users to have the Microsoft Silverlight plugin installed in their browsers. And we still provide the 'Standard' mode which uses standard HTML.</p>
<p>We chose to use Silverlight so you can quickly deliver to you a robust, proven solution for uploading large files. And by using Silverlight in the 'Advanced' mode, you get more benefits.</p>
<h3>Available Now In v2011 vol 1</h3>
<p>The new 'Advanced' mode feature of our ASP.NET Upload WebForms control and MVC Extension is available now with <a href="http://devexpress.com/ClientCenter/Downloads/" target="_blank">the DXperience v2011 volume 1 release</a>.</p>
<p>What do you think of the slick new features in our ASP.NET upload control? Drop me a line below with your thoughts. Thanks!</p>
<div class="dxperience-blog-block">
<h4>DXperience? What's That?</h4>
<p>DXperience is the .NET developer's secret weapon. Get full access to a complete suite of professional components that let you instantly drop in new features, designer styles and fast performance for your applications. Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p>
</div>
<p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p></Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>130</ID>
<Date>2011-05-11T19:06:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET PDF/XLS Export Speed Increased! (available now in v2011.1)</Subject>
<Text><p>Thanks everyone!</p>
<p>Eric, Yes, the 2011.1 release should probably be around the June 2011 timeframe.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>129</ID>
<Date>2011-05-11T14:08:00+04:00</Date>
<From>eric holyak</From>
<Subject>ASP.NET PDF/XLS Export Speed Increased! (available now in v2011.1)</Subject>
<Text><p>Very, very excited for this improvement, Mehul! Is June or July still time frame for deployment of 11.1?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>128</ID>
<Date>2011-05-11T04:56:00+04:00</Date>
<From>James Zhong</From>
<Subject>XAF - EasyTest Improvements (coming in v2011 vol 1)</Subject>
<Text><p>Hello Dennis, thank you for your continuous work on XAF! </p>
<p>(1) Is it possible to record scripts in Win and Web, using *OptionalAction directly instead of *Action? Similarly, recording scripts should generate the new &nbsp;*CheckValidationResult and *ExecuteEditorAction, etc. in the 2011.1 version.</p>
<p>(2) In other words, developers don't have to modify the recorded scripts too much to meet both Win and Web platforms, and they hope to manually write test scripts following example scripts which are recorded on either Win or Web platform.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>127</ID>
<Date>2011-05-11T02:20:00+04:00</Date>
<From>Christopher D. Todd</From>
<Subject>ASP.NET PDF/XLS Export Speed Increased! (available now in v2011.1)</Subject>
<Text><p>WOW!! Impressive!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>126</ID>
<Date>2011-05-10T15:12:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET PDF/XLS Export Speed Increased! (available now in v2011.1)</Subject>
<Text><p><span style="position: relative; padding: 0px; line-height: 15px; margin: 0px 10px; width: 245px; display: block; float: right;" id="wylio-flickr-image-2300190277"><img style="border-style: none; padding: 0px;" alt="" src="http://img.wylio.com/flickr/544/245/2300190277" width="245" height="184"><span style="padding: 0px; font-style: italic; margin: 0px; width: 100%; background-color: rgb(255, 255, 255); float: left; clear: both; font-size: 11px; font-family: arial,sans-serif; color: rgb(170, 170, 170);" id="wylio-flickr-credits-2300190277" class="wylio-credits"><span style="padding: 2px; margin: 0px;" class="photoby"><span style="margin: 0px; display: block; float: left;">photo © 2008 <a style="padding: 0px; margin: 0px; color: rgb(170, 170, 170); text-decoration: underline;" title="click to visit the Flickr profile page for Nathan" href="http://www.flickr.com/people/thatguyfromcchs08/" target="_blank">Nathan</a> | <a style="padding: 0px; margin: 0px; color: rgb(170, 170, 170); text-decoration: underline;" title="get more information about the photo '" href="http://www.flickr.com/photos/7843389@N02/2300190277" target="_blank">more info </a></span><span style="display: block; float: right; margin-left: 5px;"><strong style="margin: 0px;">(via: <a style="padding: 0px; margin: 0px; color: rgb(170, 170, 170); text-decoration: underline;" title="free pictures" href="http://www.wylio.com" target="_blank">Wylio</a>)</strong></span></span></span></span></p> <p>Check out the speed improvements for exporting large amounts of data from DevExpress ASP.NET products.</p> <p>Julian, our CTO, blogged about the <a href="http://community.devexpress.com/blogs/ctodx/archive/2011/04/05/sneak-peek-improving-the-performance-and-memory-footprint-of-excel-and-pdf-export-from-winforms-grid-coming-in-v2011-1.aspx" target="_blank">improvements coming in our WinForms Grid exporting</a>. And as Julian mentions in his post, the DevExpress engineers were challenged to improve the performance for exporting data. And they delivered!</p> <h3>Performance Increase In Numbers</h3> <p>Here's the actual breakdown:</p> <p><strong>What we used</strong>. The latest version of DXperience v2010.2 and a preview build for DXperience v2011.1.</p> <p><strong>What we timed/measured</strong>. We used 4 benchmarks:</p> <ol> <li>ASPxGridView with 20,000 records and 5 columns. A quarter of a million cells. </li> <li>ASPxGridView with 50,000 records and 5 columns. Half a million cells. </li> <li>ASPxGridView with 100,000 records and 5 columns. A million cells. </li> <li>ASPxGridView with 50,000 records and 10 columns. Half a million cells. </li> </ol> <p><strong>The results.</strong></p> <p>Take a look at these charts that show the big increase in performance:</p> <p><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Exporting 50 Rows with 10 Columns" alt="Exporting 50 Rows with 10 Columns" src="http://community.devexpress.com/blogs/aspnet/50Rows10Columns_71A5AA5D.png" width="698" border="0" height="498">&nbsp;</p> <p><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Export PDF with 5 Columns" alt="Export PDF with 5 Columns" src="http://community.devexpress.com/blogs/aspnet/PDF5Columns_6369C21E.png" width="698" border="0" height="498">&nbsp;</p> <p><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Export XLSX with 5 Columns" alt="Export XLSX with 5 Columns" src="http://community.devexpress.com/blogs/aspnet/XLSX5Columns_6E95DD19.png" width="698" border="0" height="498"></p> <p>Thanks <a href="http://devexpress.com/bryan" target="_blank">Bryan</a>, the DevExpress charting evangelist, for creating these slick charts using <a href="http://devexpress.com/XtraCharts" target="_blank">XtraCharts</a>.</p> <h3>Faster Exports</h3> <p>The export performance is tremendous. For example, exporting a PDF with 100,000 rows is now 6 times faster. And exporting an XLS with 100,000 rows is 20 times faster!</p> <p>You're end-users will feel the benefits immediately when you upgrade to DXperience v2011 volume 1. And you won't have to make any code changes to get the performance benefits!</p> <p>Take a look at these charts to see the rate of change. As the number of rows is increased, the new exporting improvements only increase by small amounts:</p> <p><a href="http://community.devexpress.com/blogs/aspnet/Xlsx5ColumnROC_6EF8F398.png" target="_blank"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="XLSX export: Rate of change" alt="XLSX export: Rate of change" src="http://community.devexpress.com/blogs/aspnet/Xlsx5ColumnROC_thumb_7A250E93.png" width="350" border="0" height="250"></a>&nbsp;<a href="http://community.devexpress.com/blogs/aspnet/PDF5ColumnsROC_095B7761.png" target="_blank"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="PDF export: Rate of change" alt="PDF export: Rate of change" src="http://community.devexpress.com/blogs/aspnet/PDF5ColumnsROC_thumb_2259D857.png" width="350" border="0" height="250"></a></p> <h3>Available now in v2011.1</h3> <p>What do you think of these new export performance improvements in <a href="http://devexpress.com/ClientCenter/Downloads/" target="_blank">DXperience v2011 volume 1 release</a>? </p> <p>Drop me a line below, thanks!</p> <div class="dxperience-blog-block"> <h4>Save time and money...</h4> <p>Save time and money with high quality pre-built components for ASP.NET, Windows Forms, WPF, Silverlight and VCL as well as IDE Productivity Tools and Business Application Frameworks, all backed by world-class service and support. Our technologies help you build your best, see complex software with greater clarity, increase your productivity and create stunning applications for Windows and Web in the shortest possible time.</p> <p>Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p> </div> <p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p></Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>122</ID>
<Date>2011-05-06T13:02:00+04:00</Date>
<From>Crono</From>
<Subject>Collapsed State Memory Consumption Improvements (available in v2011.1)</Subject>
<Text><p>As a heavy user of the XtraPivotGrid and the ASPxPivotGrid, I can't thank you enough! :D</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>120</ID>
<Date>2011-05-05T08:42:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XAF - EasyTest Improvements (coming in v2011 vol 1)</Subject>
<Text><p>Thank you for the feedback, James! Let us know if you think that EasyTest is missing something important for you.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>119</ID>
<Date>2011-05-05T01:20:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET HTML Editor (WebForms & MVC) - New Document Selector For Inserting Links (available now in v2011.1)</Subject>
<Text><p>E. Brito,</p>
<p>Thanks, this feature will be available when the DXperience v2011 volume 1 is released in a month or so. :)</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>118</ID>
<Date>2011-05-04T23:22:00+04:00</Date>
<From>E. Brito</From>
<Subject>ASP.NET HTML Editor (WebForms & MVC) - New Document Selector For Inserting Links (available now in v2011.1)</Subject>
<Text><p>Awesome. When can I get it :-)</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>117</ID>
<Date>2011-05-04T21:04:00+04:00</Date>
<From>Merlin McKenzie</From>
<Subject>ASP.NET Check Box - New Render State For Multiple Controls (available now in v2011.1)</Subject>
<Text><p>Wonderful, I've been needing this for one particular app, some customers who have been waiting 2 years for the feature will be very happy to have it.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>115</ID>
<Date>2011-05-04T14:51:00+04:00</Date>
<From>Vassilios Pallis</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>Is that means that we can at last use WCF with XPO in Silverlight 4 Applications ?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>116</ID>
<Date>2011-05-04T14:51:00+04:00</Date>
<From>Lucy</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>Dennis, is there better XPO support for RIA Services coming? I tried it, and there is a SC article about it, but it's very hard to do.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>114</ID>
<Date>2011-05-04T12:30:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET HTML Editor (WebForms & MVC) - New Document Selector For Inserting Links (available now in v2011.1)</Subject>
<Text><p>Check out the new 'Document Selector' feature of the DevExpress ASP.NET HTML Editor that's <a href="http://devexpress.com/ClientCenter/Downloads/" target="_blank">available now in the DXperience v2011.1 release</a>. This short 6 minute video shows how easily your end-users can insert hyperlinks in to documents using our ASP.NET Html Editor's built-in Select Document dialog:</p> <p><a href="http://tv.devexpress.com/#ASPxHTMLEditorDocSelector;ASPxHtmlEditor.product;1" target="_blank"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Video: DevExpress ASP.NET HTML Editor - Document Selector" alt="Video: DevExpress ASP.NET HTML Editor - Document Selector" src="http://community.devexpress.com/blogs/aspnet/image_74128C2F.png" width="545" border="0" height="310"></a></p> <h3>Insert Links with Ease</h3> <p>The upcoming Select Document dialog is a useful addition to the Insert Link and Change Link dialogs. It will allow your end-users to manage content hyperlinks using a point-and-click UI, rather than typing URLs manually.</p> <h3>ASP.NET File Manager Integration</h3> <p>We've integrated our versatile <a href="http://community.devexpress.com/blogs/aspnet/archive/2010/10/22/asp-net-file-manager-w-upload-support-new-control-coming-soon-in-v2010-vol-2.aspx" target="_blank">ASP.NET File Manager control</a> into the new Select Document dialog, giving you it's power and features without you having to code it manually.</p> <p>And with the ASPxFileManager control integration, you get:</p> <ul> <li>all file/folder management </li> <li>access control </li> <li>upload capabilities </li> </ul> <p>All these features are available to you out-of-the-box. </p> <h3>ASP.NET WebForms &amp; MVC!</h3> <p>The new Select Document feature will be available for both the WebForms control and MVC extension of our ASP.NET HTML Editor!</p> <h3>New Properties</h3> <p>To enable the new Select Document capabilities, simply turn on the corresponding options via the editor's SettingsDocumentSelector option set. For example, here's the settings we'll be using in our upcoming ASPxHtmlEditor demo for v2011 volume 1 release:</p> <div><div id="highlighter_321517" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2 highlighted">5</div><div class="line number6 index5 alt1 highlighted">6</div><div class="line number7 index6 alt2 highlighted">7</div><div class="line number8 index7 alt1 highlighted">8</div><div class="line number9 index8 alt2 highlighted">9</div><div class="line number10 index9 alt1 highlighted">10</div><div class="line number11 index10 alt2 highlighted">11</div><div class="line number12 index11 alt1 highlighted">12</div><div class="line number13 index12 alt2 highlighted">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">...</code></div><div class="line number2 index1 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">Items</code><code class="xml plain">&gt;</code></div><div class="line number3 index2 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">dx:HtmlEditorToolbar</code><code class="xml plain">&gt;</code></div><div class="line number4 index3 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">Toolbars</code><code class="xml plain">&gt;</code></div><div class="line number5 index4 alt2 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">SettingsDocumentSelector</code> <code class="xml color1">Enabled</code><code class="xml plain">=</code><code class="xml string">"True"</code><code class="xml plain">&gt;</code></div><div class="line number6 index5 alt1 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">CommonSettings</code> <code class="xml color1">RootFolder</code><code class="xml plain">=</code><code class="xml string">"~/Content/FileManager/Documents"</code> <code class="xml plain">/&gt;</code></div><div class="line number7 index6 alt2 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">PermissionSettings</code><code class="xml plain">&gt;</code></div><div class="line number8 index7 alt1 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">AccessRules</code><code class="xml plain">&gt;</code></div><div class="line number9 index8 alt2 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">dx:FileManagerFolderAccessRule</code> <code class="xml color1">Role</code><code class="xml plain">=</code><code class="xml string">""</code> <code class="xml color1">Upload</code><code class="xml plain">=</code><code class="xml string">"Deny"</code> <code class="xml plain">/&gt;</code></div><div class="line number10 index9 alt1 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">dx:FileManagerFolderAccessRule</code> <code class="xml color1">Role</code><code class="xml plain">=</code><code class="xml string">""</code> <code class="xml color1">Path</code><code class="xml plain">=</code><code class="xml string">"Upload"</code> <code class="xml color1">Upload</code><code class="xml plain">=</code><code class="xml string">"Allow"</code> <code class="xml plain">/&gt;</code></div><div class="line number11 index10 alt2 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">AccessRules</code><code class="xml plain">&gt;</code></div><div class="line number12 index11 alt1 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">PermissionSettings</code><code class="xml plain">&gt;</code></div><div class="line number13 index12 alt2 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">SettingsDocumentSelector</code><code class="xml plain">&gt;</code></div><div class="line number14 index13 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">SettingsImageUpload</code> <code class="xml color1">UploadImageFolder</code><code class="xml plain">=</code><code class="xml string">"~/UploadImages/"</code><code class="xml plain">&gt;</code></div><div class="line number15 index14 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">ValidationSettings</code> <code class="xml color1">AllowedFileExtensions</code><code class="xml plain">=</code><code class="xml string">".jpe,.jpeg,.jpg,.gif,.png"</code> <code class="xml color1">MaxFileSize</code><code class="xml plain">=</code><code class="xml string">"500000"</code><code class="xml plain">&gt;</code></div><div class="line number16 index15 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">ValidationSettings</code><code class="xml plain">&gt;</code></div><div class="line number17 index16 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;/</code><code class="xml keyword">SettingsImageUpload</code><code class="xml plain">&gt;</code></div><div class="line number18 index17 alt1"><code class="xml plain">&lt;/</code><code class="xml keyword">dx:ASPxHtmlEditor</code><code class="xml plain">&gt;</code></div></div></td></tr></tbody></table></div></div>
<h3>Available now in v2011 volume 1</h3>
<p>The new Select Document feature of the ASPxHtmlEditor is <a href="http://devexpress.com/ClientCenter/Downloads/" target="_blank">available now in the DXperience v2011 volume 1 release</a>. Thanks!</p>
<div class="dxperience-blog-block">
<h4>DXperience? What's That?</h4>
<p>DXperience is the .NET developer's secret weapon. Get full access to a complete suite of professional components that let you instantly drop in new features, designer styles and fast performance for your applications. Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p>
</div>
<p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p></Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>112</ID>
<Date>2011-04-30T10:05:00+04:00</Date>
<From>Simon Kraa</From>
<Subject>DevDays 2011</Subject>
<Text><p>It was nice talking to you guys in person about our business and DevExpress future developments. And thanks for the T-shirts! :-)</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>111</ID>
<Date>2011-04-29T17:01:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XPO – 11.1 Sneak Peek – Data caching improvements</Subject>
<Text><p>@Gustavo:</p>
<p>Check my answer to Martin in <a rel="nofollow" target="_new" href="http://community.devexpress.com/forums/t/100598.aspx">community.devexpress.com/.../100598.aspx</a></p>
<p>Please let me know if you need additional assistance on this. I will be glad to help you.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>110</ID>
<Date>2011-04-29T15:41:00+04:00</Date>
<From>Gustavo Marzioni</From>
<Subject>XPO – 11.1 Sneak Peek – Data caching improvements</Subject>
<Text><p>Can you bring an example of this using XAF?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>109</ID>
<Date>2011-04-29T12:12:00+04:00</Date>
<From>Sascha</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>Will this play nicely with authentication? Something like BASIC auth or some based on membership providers? That would be really nice!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>107</ID>
<Date>2011-04-28T19:48:00+04:00</Date>
<From>Rachel Reese (DevExpress)</From>
<Subject>WinForms Ribbon Control – MacOffice Paint Style and Back Stage View Control (available now in v2011, volume 1)</Subject>
<Text><p>Hey guys, </p>
<p>Thanks for the feedback -- we decided to implement the MacStyle for a couple reasons. </p>
<p>First, it's simply another view that might be helpful to some of our customers -- and Miles and Jerzy seem to agree. :)</p>
<p>Second, regardless of whether it looks good to you, there are new features that make it a useful new view, over the Classic style: </p>
<p>1) the MacStyle Ribbon places all items into two rows. This differs from the Classic Ribbon, which uses three, and means that the MacStyle Ribbon is shorter (this was requested in Q132389 and Q307946, and many times beyond those); </p>
<p>2) the horizontal scrolling feature. Since the Ribbon itself is horizontal, it makes sense to have an option for the scrolling to stay aligned this way; and</p>
<p>3) improvements to the way the RibbonPageCategory handles captions. </p>
<p>Thanks!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>106</ID>
<Date>2011-04-28T13:39:00+04:00</Date>
<From>James Zhong</From>
<Subject>XAF - EasyTest Improvements (coming in v2011 vol 1)</Subject>
<Text><p>Very useful improvement for EasyTest! This will help unify the Win and Web dual platforms test. </p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>105</ID>
<Date>2011-04-28T10:28:00+04:00</Date>
<From>Apostolis Bekiaris (DevExpress)</From>
<Subject>XAF - EasyTest Improvements (coming in v2011 vol 1)</Subject>
<Text><p align="justify"><b></b></p> <p align="justify">As you know, XAF is shipped with <a href="http://help.devexpress.com/#Xaf/CustomDocument3206">EasyTest functional test framework</a>. In the upcoming release, we made a number of changes in the EasyTest script commands. Several new commands were introduced, and the existing commands functionality was extended. The main aim of the improvements we made is to simplify testing of XAF applications that have both Windows Forms and ASP.NET versions. </p> <p align="justify">Although XAF can produce Windows Form and ASP.NET applications with the same functionality, there are differences in their behavior. Previously, you had to use the <b>IfDef</b> EasyTest command to control test flow, depending on which application is testing. Commonly encountered issues are:</p> <p align="justify">- To modify the current object in ASP.NET applications, you should switch the Detail View to edit mode via the Edit Action. There is no Edit Action in Windows Forms applications, as the Detail View is initially editable.</p> <p align="justify">- The broken validation rules are displayed in a different manner. In Windows Forms applications, the ValidationWindowsFormsModule module handles broken rules and displays validation results in a separate View. In ASP.NET applications, the validation error messages are displayed as any other error messages in the current page via the ErrorInfoControl control (see <a href="http://help.devexpress.dev/#Xaf/CustomDocument2704">Error Handling in ASP.NET Applications</a>).</p> <p align="justify">There are other differences in behavior, but the two above are most significant. The following improvements were introduced to a number of IfDef/EndIf commands in tests. </p> <p align="justify"><b>OptionalAction command introduced</b></p> <p align="justify">The new OptionalAction command acts like the old <b>Action</b> command. The difference is that this command does not require the target control to be visible and active. If the Action is unavailable, this command simply does nothing. Let us consider the following script snippet:</p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> *ProcessRecord </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span>&nbsp; Last Name = Tellitson </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 3</span> #IfDef MainDemoWin </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 4</span> Action Edit </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 5</span> #EndIf </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 6</span> *FillForm </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 7</span>&nbsp; Birthday = 11/28/1980</p> </div> <p align="justify">With the new OptionalAction command, it can be rewritten in the following manner:</p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> *ProcessRecord </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span>&nbsp; Last Name = Tellitson </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 3</span> *OptionalAction Edit </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 4</span> *FillForm </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 5</span>&nbsp; Birthday = 11/28/1980</p> </div> <p align="justify"><b>CheckValidationResult command introduced</b></p> <p align="justify">The new CheckValidationResult command tests the validation results that are currently displayed. It supports both Windows Forms and ASP.NET representation of validation results (pop-up window and ErrorInfo control, respectively). The following secondary parameters can be specified: </p> <p align="justify">· <b>Message</b> - optional. Checks the primary validation error message. </p> <p align="justify">· <b>Columns</b> - optional. Considered for Windows Forms applications. It specifies captions of the <b>DisplayableValidationResultItem</b> List View columns to be tested. You can specify two Target and Description column captions, or a single 'Description' column. If the <b>Columns</b> parameter is omitted and the <b>Info</b> property specifies a target name and a description text, then columns with the "Target" and "Description" captions are tested. If the <b>Columns</b> parameter is omitted and the <b>Info</b> property specifies a description text only, then a column with the "Description" caption is tested.</p> <p align="justify">· <b>Info</b> - optional. Checks validation results (rule target and description) of each broken rule. You can specify target name and description text separated by comma, or description text only. </p> <p align="justify">· <b>SkipUnexpectedErrors </b>- optional. When set to True, disables checking the validation errors that are not specified by <b>Info </b>parameters. The default value is False, so the <b>CheckValidationResult </b>command execution fails when there are unexpected validation errors.<b></b></p> <p align="justify">Let us consider the following script snippet that can be used to test validation results in previous version of XAF:</p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> #IfDef MainDemoWin </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span> *CheckFieldValues </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 3</span>&nbsp; ValidationResultsText = Problems were detected during data validation. Please read the information below to understand what the issues are and how you can correct them. </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 4</span> *CheckTable </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 5</span>&nbsp; Columns = Description </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 6</span>&nbsp; Row = "Title" must not be empty. </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 7</span> *Action Close </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 8</span> #EndIf </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 9</span> #IfDef MainDemoWeb </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp; 10</span> *FieldVisible ErrorInfo </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp; 11</span> *CheckFieldValues </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp; 12</span>&nbsp; ErrorInfo[0] = Problems were detected during data validation. Please read the information below to understand what the issues are and how you can correct them. </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp; 13</span>&nbsp; ErrorInfo[1] = - "Title" must not be empty. </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp; 14</span> #EndIf</p> </div> <p align="justify">With the new CheckValidationResult command, it can be rewritten in the following manner:</p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> *CheckValidationResult </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span>&nbsp; Message = Problems were detected during data validation. Please read the information below to understand what the issues are and how you can correct them. </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 3</span>&nbsp; Info = "Title" must not be empty. </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 4</span> *OptionalAction Close</p> </div> <p align="justify">Note a use of the OptionalAction command in this scenario. It closes the validation pop-up window in the Windows Forms application. </p> <p align="justify"><b>New capabilities of the HandleDialog command </b></p> <p align="justify">Now, this command supports messages displayed via the ErrorInfoControl in ASP.NET applications. So, this script snippet:</p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> *Action Log On </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span> #IfDef MySolutionWeb </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 3</span> *CheckFieldValues </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 4</span>&nbsp; ErrorInfo = Login failed for 'UnExistingUser'. Make sure your user name is correct and retype the password in the correct case. </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 5</span> #EndIf </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 6</span> #IfDef MySolutionWin </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 7</span> *HandleDialog </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 8</span>&nbsp; Message = Login failed for 'UnExistingUser'. Make sure your user name is correct and retype the password in the correct case. </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 9</span>&nbsp; Respond = OK </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp; 10</span> #EndIf</p> </div> <p align="justify">…can be rewritten as:</p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> *Action Log On </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span> *HandleDialog </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 3</span>&nbsp; Message = Login failed for 'UnExistingUser'. Make sure your user name is correct and retype the password in the correct case. </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 4</span> *OptionalAction OK</p> </div> <p align="justify">Additionally, the HandleDialog command takes the optional Caption parameter now. You can check the active window caption in a Windows Forms application and the document title in an ASP.NET application with this parameter:</p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> *HandleDialog </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span>&nbsp; Caption = MainForm </p> </div> </div> <p align="justify">Another significant improvement is that the HandleDialog command supports browser’s confirmation messages now (for instance, displayed when executing an Action that has the <b>ActionBase.ConfirmationMessage</b> property specified). To test confirmations in an XAF application that was updated from the previous XAF version, remove the following line from the Application_Start method in the <i>Global.asax.cs</i> file:</p> <p align="justify">ConfirmationsHelper.IsConfirmationsEnabled = false;</p> <p align="justify"><b>The FillForm command improvements</b></p> <p align="justify">Previously, to select a value in a lookup field, you had to write the following code:</p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> #IfDef MySolutionWin </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span> *FillForm </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 3</span>&nbsp; Department = Sales Department </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 4</span> #EndIf </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 5</span> #IfDef MySolutionWeb </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 6</span> *ExecuteEditorAction LookupField(Find) </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 7</span> *Action Filter by Text(Sales Department) </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 8</span> *SelectRecords </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 9</span>&nbsp; Columns = Name </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp; 10</span>&nbsp; Row = Sales Department </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp; 11</span> *Action OK </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp; 12</span> #EndIf</p> </div> <p align="justify">The FillForm command supports Lookup Property Editors in ASP.NET applications now, and this test can be much simplified:</p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> *FillForm </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span>&nbsp; Department = Sales Department</p> </div> <p align="justify"><b>The ExecuteEditorAction command improvements</b></p> <p align="justify">Previously, to execute an action displayed within a lookup, you had to write the following code:</p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> #IfDef MyAppWin </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span> *ExecuteEditorAction Status </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 3</span> *Action New </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 4</span> #EndIf </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 5</span> #IfDef MyAppWeb </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 6</span> *ExecuteEditorAction Status(New) </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 7</span> #EndIf</p> </div> <p align="justify">Now you can pass an argument to the ExecuteEditorAction command when testing Windows Forms applications. So, the IfDef commands are not required:</p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> *ExecuteEditorAction Status(New)</p> </div> <p align="justify"><b>Wildcard support</b></p> <p align="justify">You can use the question mark (<b>?</b>) and asterisk character (<b>*</b>) as wildcards in parameter values EasyTest commands. The <b>?</b> wildcard substitutes for any one character, and <b>*</b> - for any zero or more characters. </p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> *CheckValidationResult </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span>&nbsp; Message = Problems were detected during data validation.* </p> </div> <p align="justify">Preceded <b>?</b> and <b>*</b> with a backslash (\), if you test a text that actually contains these characters. </p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> *HandleDialog </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span>&nbsp; Message = Do you want to cancel your changes\?</p> </div> <p align="justify"></p> <p align="justify">To test that an error message was not displayed, use the following code:</p> <div style="font-family: consolas; background: none repeat scroll 0% 0% white; color: black; font-size: 10pt;"> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 1</span> !HandleDialog </p> <p style="margin: 0px;"><span style="color: rgb(43, 145, 175);">&nbsp;&nbsp;&nbsp; 2</span>&nbsp; Message = ?*</p> </div> <p align="justify">What do you Xafers think of EasyTest? Do you see anything missing?</p> <p align="justify">Happy EasyTesting!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>104</ID>
<Date>2011-04-27T22:34:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>Great Indian Developer Summit 2011 - Day One with .NET & DevExpress</Subject>
<Text><p>Rachel,</p>
<p>Yes, that was a great time. Bangalore and GIDS were fantastic!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>103</ID>
<Date>2011-04-27T12:22:00+04:00</Date>
<From>Rachel Hawley (DevExpress)</From>
<Subject>Great Indian Developer Summit 2011 - Day One with .NET & DevExpress</Subject>
<Text><p>Mehul - can we go back again now, please?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>102</ID>
<Date>2011-04-27T07:28:00+04:00</Date>
<From>Bo Johansen</From>
<Subject>ASP.NET Check Box - New Render State For Multiple Controls (available now in v2011.1)</Subject>
<Text><p>The ability to use custom images for the check states will simplify a lot of my grids, where I use templates to show boolean states in order to show my own images and not the :o)</p>
<p>Excellent, guys!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>101</ID>
<Date>2011-04-27T05:17:00+04:00</Date>
<From>Steve Sharkey</From>
<Subject>AsyncMode for Pivot Grid (available in v2011.1)</Subject>
<Text><p>Excellent! Keep them comming.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>100</ID>
<Date>2011-04-27T04:37:00+04:00</Date>
<From>Alan (DevExpress)</From>
<Subject>WPF and Silverlight Gauge Controls</Subject>
<Text><p>@Obliterator: Thank you for your compliments! As for your questions:</p>
<p>- RangeBar can have any values set to its AnchorValue and Value properties.</p>
<p>- LevelBar is always "anchored" to the StartValue property of a LinearScale, but of course this StartValue can be set to -20, so it's possible to create thermometer-like gauges.</p>
<p>Hope you will like it!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>99</ID>
<Date>2011-04-26T14:55:00+04:00</Date>
<From>Robert Perry</From>
<Subject>WinForms Ribbon Control – MacOffice Paint Style and Back Stage View Control (available now in v2011, volume 1)</Subject>
<Text><p>I agree with Heiko Mueller - complete waste of time.. There are other improvements that are more important and more desired than pointless additional themes/styles to make my PC look like a Mac.. That's not going to impress my customers.. :-(</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>98</ID>
<Date>2011-04-26T12:28:00+04:00</Date>
<From>Obliterator</From>
<Subject>WPF and Silverlight Gauge Controls</Subject>
<Text><p>Gauges look really good and are a welcomed addition!</p>
<p>Can the Range Bar and Level Bar handle a range that doesn't start from zero? E.g. from 40 to 100.</p>
<p>Also presume the gauges can display negative values like a thermometer for example? e.g -20 to +100.</p>
<p>Agree the styles pictured in the anatomy section look really clean. It would be nice to include these in XtraGauges so reports can have a consistent output with the app UI.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>97</ID>
<Date>2011-04-26T11:00:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET Check Box - New Render State For Multiple Controls (available now in v2011.1)</Subject>
<Text><p>The <a href="http://devexpress.com/asp" target="_blank">DevExpress ASP.NET</a> Check Box control is getting a slick new feature that's <a href="http://devexpress.com/ClientCenter/Downloads/" target="_blank">available now in the DXperience v2011.1 release</a>. Check out the new 'Grayed' state for the ASP.NET check box that allows you to display stylish new check box controls:</p> <p><img style="display: inline;" title="ASP.NET Check Box - Grayed Out State" alt="ASP.NET Check Box - Grayed Out State" src="http://community.devexpress.com/blogs/aspnet/ASPNET_CHECK-BOX_3_STATES_42008F59.gif" width="461" height="140"></p> <h3>Two or Three Check Box States</h3> <p>A check box indicates whether a particular condition is on or off. Therefore, it's just a Boolean value used to present a Yes/No or True/False selection to your end-user. </p> <p>A new property called <strong>AllowGrayed</strong> has been added to our ASP.NET Check box editor control, the ASPxCheckBox. The <strong>AllowGrayed</strong> property allows a third <em>indeterminate state </em>for the check box. And to determine the state of the new ASPxCheckBox feature, we've added a new property called <strong>CheckState</strong> property:</p> <ul> <li>CheckState.Checked </li> <li>CheckState.Unchecked </li> <li>CheckState.Indeterminate </li> </ul> <p>The third, indeterminate, state is available if the <strong>AllowGrayed</strong> property is set to true. In three-states mode, you can also use the <strong>AllowGrayedByClick</strong> property to control whether your end-users are allowed to switch the editor to the indeterminate state or whether this can only be done programmatically. Of course, the default Boolean <strong>Checked</strong> property is still there for the ASPxCheckBox. However, it only holds 2 values: {true, false}. </p> <p>And we've also added the following client side methods to help check the state: <em>ASPxClientCheckBox.SetCheckState()</em>, <em>ASPxClientCheckBox.GetCheckState()</em></p> <h3>Use Custom Images</h3> <p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="CheckBox_CustomImages" alt="CheckBox_CustomImages" src="http://community.devexpress.com/blogs/aspnet/CheckBox_CustomImages_52DE74B3.png" width="150" border="0" height="52"></p> <p>Use custom images and make your check box appear more interesting and appealing. By default, a check box is represented by an image within the ASPxCheckBox editor. So it's possible to assign your own images for different check box states. Use the new <strong>CheckedImage</strong>, <strong>UncheckedImage</strong> and <strong>GrayedImage</strong> properties. And customization is easy because everything you need can be done right in the markup:</p> <div><div id="highlighter_829671" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1 highlighted">2</div><div class="line number3 index2 alt2 highlighted">3</div><div class="line number4 index3 alt1 highlighted">4</div><div class="line number5 index4 alt2">5</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">dx:ASPxCheckBox</code> <code class="xml color1">runat</code><code class="xml plain">=</code><code class="xml string">"server"</code> <code class="xml color1">Text</code><code class="xml plain">=</code><code class="xml string">"ASPxCheckBox"</code><code class="xml plain">&gt;</code></div><div class="line number2 index1 alt1 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">CheckedImage</code> <code class="xml color1">Url</code><code class="xml plain">=</code><code class="xml string">"Images/Checked.png"</code> <code class="xml color1">ToolTip</code><code class="xml plain">=</code><code class="xml string">"Checked"</code> <code class="xml color1">Width</code><code class="xml plain">=</code><code class="xml string">"30px"</code> <code class="xml color1">Height</code><code class="xml plain">=</code><code class="xml string">"30px"</code> <code class="xml plain">/&gt;</code></div><div class="line number3 index2 alt2 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">UncheckedImage</code> <code class="xml color1">Url</code><code class="xml plain">=</code><code class="xml string">"Images/Unchecked.png"</code> <code class="xml color1">ToolTip</code><code class="xml plain">=</code><code class="xml string">"Unchecked"</code> <code class="xml color1">Width</code><code class="xml plain">=</code><code class="xml string">"30px"</code> <code class="xml color1">Height</code><code class="xml plain">=</code><code class="xml string">"30px"</code> <code class="xml plain">/&gt;</code></div><div class="line number4 index3 alt1 highlighted"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">GrayedImage</code> <code class="xml color1">Url</code><code class="xml plain">=</code><code class="xml string">"Images/Grayed.png"</code> <code class="xml color1">ToolTip</code><code class="xml plain">=</code><code class="xml string">"Grayed"</code> <code class="xml color1">Width</code><code class="xml plain">=</code><code class="xml string">"30px"</code> <code class="xml color1">Height</code><code class="xml plain">=</code><code class="xml string">"30px"</code> <code class="xml plain">/&gt;</code></div><div class="line number5 index4 alt2"><code class="xml plain">&lt;/</code><code class="xml keyword">dx:ASPxCheckBox</code><code class="xml plain">&gt;</code></div></div></td></tr></tbody></table></div></div>
<p>Bonus: Once the DXperience v2011 volume 1 is released, you can use our sample above, the custom demo check box images for your website with DevExpress ASPxCheckBox! #Winning!</p>
<h3>Native Rendering</h3>
<p>Our ASP.NET check box control doesn't use the HTML INPUT element and so we're able to give you themes and three check box states. However, the ASPxCheckBox also supports native rendering by exposing the <strong>Native</strong> property. Set this property to true to render ASPxCheckBox as a native HTML INPUT element of the CHECKBOX type. This reduces the render size and improves the editor's overall performance. But remember, in the native mode, the ASPxCheckBox behaves and appears as a standard HTML check box. So, it only works in two states and it does not display check box images.</p>
<h3>Other Controls Benefit Too</h3>
<p>Because the ASPxCheckBox control and it's code is used in other controls, you'll get added benefit of the new customization and CheckState in our other popular ASP.NET controls like:</p>
<h3>ASP.NET RadioButton and RadioButtonList</h3>
<p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="RadioButtonList_SoftOrange" alt="RadioButtonList_SoftOrange" src="http://community.devexpress.com/blogs/aspnet/RadioButtonList_SoftOrange_3BAF420A.png" width="156" border="0" height="113"></p>
<p>Like the ASPxCheckBox, the DevExpress ASPxRadioButton and ASPxRadioButtonList controls both have the following new customization properties:</p>
<ul>
<li>CheckedImage </li>
<li>UncheckedImage </li>
<li>RadioButtonFocusedStyle </li>
<li>RadioButtonStyle </li>
</ul>
<h3>ASP.NET TreeView</h3>
<p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="TreeView_Office2010Black" alt="TreeView_Office2010Black" src="http://community.devexpress.com/blogs/aspnet/TreeView_Office2010Black_7702A7C8.png" width="243" border="0" height="273"></p>
<p>Our ASP.NET TreeView control, the ASPxTreeView, also supports the third check box state. If you turn on the TreeView 's recursive selection feature then the TreeView will set the Indeterminate state for nodes for which it's child elements have different states. Therefore, if only a few subitems in the tree hierarchy is partially selected then you'll see the 'indeterminate' state for their parent node.</p>
<p>And you customize the images and style for these check boxes too by using the following properties:</p>
<ul>
<li>ASPxTreeView.Images.CheckBoxChecked </li>
<li>ASPxTreeView.Images.CheckBoxUnchecked </li>
<li>ASPxTreeView.Images.CheckBoxGrayed </li>
<li>ASPxTreeView.Styles.NodeCheckBox </li>
<li>ASPxTreeView.Styles.NodeCheckBoxFocused </li>
</ul>
<p>Use the server-side <em>CheckState </em>property to work with the third state check box in the TreeViewNode and TreeViewVirtualNode objects. And their corresponding client-side equivalent: <em>ASPxClientTreeViewNode.GetCheckState()</em>.</p>
<h3>ASP.NET GridView &amp; ASP.NET GridLookup</h3>
<p>Check out the custom image improvements for the ASPxGridView and ASPxGridLookup controls:</p>
<p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="GridView_BlackGlass" alt="GridView_BlackGlass" src="http://community.devexpress.com/blogs/aspnet/GridView_BlackGlass_4B51DDCC.png" width="709" border="0" height="322"></p>
<p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="GridView_Office2003Olive" alt="GridView_Office2003Olive" src="http://community.devexpress.com/blogs/aspnet/GridView_Office2003Olive_4917E5C1.png" width="709" border="0" height="322"></p>
<p>Use custom images for the ASPxGridView using the following properties:&nbsp; <br>For single selection (<em>ASPxGridView.SettingsBehavior.AllowSelectSingleRowOnly</em> = true): </p>
<ul>
<li>ASPxGridView.ImagesEditors.RadioButtonChecked </li>
<li>ASPxGridView.ImagesEditors.RadioButtonUnchecked </li>
<li>ASPxGridView.StylesEditors.RadioButton </li>
<li>ASPxGridView.StylesEditors.RadioButtonFocused </li>
</ul>
<p>For multi-selection (<em>ASPxGridView.SettingsBehavior.AllowSelectSingleRowOnly</em> = false): </p>
<ul>
<li>ASPxGridView.ImagesEditors.CheckBoxChecked </li>
<li>ASPxGridView.ImagesEditors.CheckBoxUnchecked </li>
<li>ASPxGridView.StylesEditors.CheckBox </li>
<li>ASPxGridView.StylesEditors.CheckBoxFocused </li>
</ul>
<h3>ASP.NET TreeList</h3>
<p>The DevExpress ASPxTreeList is also getting the benefits of the new ASP.NET check box:</p>
<p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="TreeList_Office2010Blue" alt="TreeList_Office2010Blue" src="http://community.devexpress.com/blogs/aspnet/TreeList_Office2010Blue_0F28A2D5.png" width="710" border="0" height="240"></p>
<p>Like the ASPxTreeView, if you turn on the TreeList 's recursive selection feature then the TreeList will set the Indeterminate state for nodes for which it's child elements have different states. Therefore, if only a few subitems in the tree hierarchy is partially selected then you'll see the 'indeterminate' state for their parent node.</p>
<p>And you customize the images and style for these check boxes too by using the following properties:</p>
<p>For check boxes customization you can use the following properties: </p>
<ul>
<li>ASPxTreeList.ImagesEditors.CheckBoxChecked </li>
<li>ASPxTreeList.ImagesEditors.CheckBoxUnchecked </li>
<li>ASPxTreeList.ImagesEditors.CheckBoxGrayed </li>
<li>ASPxTreeList.StylesEditors.CheckBox </li>
<li>ASPxTreeList.StylesEditors.CheckBoxFocused </li>
</ul>
<p>Wow, these improvements will enhance several controls at once!</p>
<p>What do you think of these slick improvements in the DevExpress ASP.NET CheckBox control? Drop me a line below, thanks.</p>
<div class="dxperience-blog-block">
<h4>Save time and money...</h4>
<p>Save time and money with high quality pre-built components for ASP.NET, Windows Forms, WPF, Silverlight and VCL as well as IDE Productivity Tools and Business Application Frameworks, all backed by world-class service and support. Our technologies help you build your best, see complex software with greater clarity, increase your productivity and create stunning applications for Windows and Web in the shortest possible time.</p>
<p>Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p>
</div>
<p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p></Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>96</ID>
<Date>2011-04-24T18:25:00+04:00</Date>
<From>Julio Rodriguez</From>
<Subject>AsyncMode for Pivot Grid (available in v2011.1)</Subject>
<Text><p>This is by far the best new feature that I have seen since I'm one of your customers. Keep doing things like this and I will be a Devexpress addict!!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>95</ID>
<Date>2011-04-24T08:16:00+04:00</Date>
<From>Roland Andreas</From>
<Subject>AsyncMode for Pivot Grid (available in v2011.1)</Subject>
<Text><p>This is cool..... End-user would knew if they've already clicked 'expand all'.... Great job!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>93</ID>
<Date>2011-04-22T10:56:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XAF – Model Merge Tool (coming in v2011 vol1)</Subject>
<Text><p>@All: We have posted a new blog that describes how to merge a user model stored in a database: <a rel="nofollow" target="_new" href="http://community.devexpress.com/blogs/eaf/archive/2011/04/22/xaf-merge-user-differences-from-a-custom-model-storage.aspx">community.devexpress.com/.../xaf-merge-user-differences-from-a-custom-model-storage.aspx</a></p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>92</ID>
<Date>2011-04-22T09:51:00+04:00</Date>
<From>Slava D (DevExpress)</From>
<Subject>XPO – 11.1 Sneak Peek – Data caching improvements</Subject>
<Text><p>@Luca Poretti:</p>
<p>I am afraid that the current implementation of data cache does not have such opportunities, because the "DataCacheNode" resets all cached data, when an instance of the "DataCacheRoot" is changed.</p>
<p>@Dusan Pupis:</p>
<p>For the purpose of compressing data you have all power of the WCF technology. There are many ways to implement such binding.</p>
<p>I suggest that you refer to the <a rel="nofollow" target="_new" href="http://social.msdn.microsoft.com/forums/en-US/wcf/thread/5c67b0da-9e50-4ee1-b7ac-a4733c580980/">social.msdn.microsoft.com/.../5c67b0da-9e50-4ee1-b7ac-a4733c580980</a> forum topic, where this problem is discussed.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>91</ID>
<Date>2011-04-22T09:21:00+04:00</Date>
<From>Dusan Pupis</From>
<Subject>XPO – 11.1 Sneak Peek – Data caching improvements</Subject>
<Text><p>What about data compression. It would come handy for slower connections, like 3G?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>90</ID>
<Date>2011-04-22T08:35:00+04:00</Date>
<From>Luca Poretti</From>
<Subject>XPO – 11.1 Sneak Peek – Data caching improvements</Subject>
<Text><p>Great !</p>
<p>Can the cache be persist on the client and re-used (loaded from a file on the client) on the next application startup ?</p>
<p>A lot of not-changing lookup table slow down application startup in my scenario ...</p>
<p>Maybe not out-of the box, but there is a way to archive this ?</p>
<p>Thanks and great work !</p>
<p>LP</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>89</ID>
<Date>2011-04-22T07:10:00+04:00</Date>
<From>Slava D (DevExpress)</From>
<Subject>XPO – 11.1 Sneak Peek – Data caching improvements</Subject>
<Text><p>@M. Brekhof:</p>
<p>This advice remains&nbsp;valid when using SqlDependency on the client. We still suggest using SqlDependency only on the server side in a scenario shown above. Because in other scenarios with a lot of clients, it will be very heavy for SQL Server and may lead to significant decrease of performance.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>88</ID>
<Date>2011-04-22T05:19:00+04:00</Date>
<From>M. Brekhof</From>
<Subject>XPO – 11.1 Sneak Peek – Data caching improvements</Subject>
<Text><p>Hi,</p>
<p>What does this mean for the advice in <a rel="nofollow" target="_new" href="http://www.devexpress.com/issue=Q95027">www.devexpress.com/issue=Q95027</a> ?</p>
<p>regards</p>
<p>Martin</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>87</ID>
<Date>2011-04-22T03:17:00+04:00</Date>
<From>Alan (DevExpress)</From>
<Subject>WPF and Silverlight Gauge Controls</Subject>
<Text><p>@Geert: Thank you! Our team did their best to deliver gauges in v2011 vol 1.</p>
<p>@Brian and Adlay: Thank you for your feedback! Could you please explain what particular models you like in DXGauges, and we will consider porting them to XtraGauges.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>86</ID>
<Date>2011-04-21T23:15:00+04:00</Date>
<From>Matthew K</From>
<Subject>XAF – Model Merge Tool (coming in v2011 vol1)</Subject>
<Text><p>Nate, I think you are okay as long as you can export your model changes to disk. You will need to do this for both the project and user models; then you can merge them and ship them back to the database.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>85</ID>
<Date>2011-04-21T22:17:00+04:00</Date>
<From>Nate Laff</From>
<Subject>XPO – 11.1 Sneak Peek – Data caching improvements</Subject>
<Text><p>Well this answers the question on if I'll move my XAF apps to use the WCF service. Yes. Yes I will :)</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>84</ID>
<Date>2011-04-21T17:30:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>@Luca: Here we go: <a rel="nofollow" target="_new" href="http://community.devexpress.com/blogs/xpo/archive/2011/04/21/xpo-11-1-sneak-peek-data-caching-improvements.aspx#comments">community.devexpress.com/.../xpo-11-1-sneak-peek-data-caching-improvements.aspx</a></p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>83</ID>
<Date>2011-04-21T14:28:00+04:00</Date>
<From>James Zhong</From>
<Subject>XAF – Model Merge Tool (coming in v2011 vol1)</Subject>
<Text><p>Very nice new feature! It allows developers and requirement analysts as well as end users to collaborate on UI layouts. </p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>82</ID>
<Date>2011-04-21T13:03:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XPO – 11.1 Sneak Peek – Data caching improvements</Subject>
<Text><h3>Introduction</h3> <blockquote><span><span></span></span> <p class="MsoNormal"><span>First, we would like to refresh your memory and return to the distant past and our old posts about data caching in XPO: </span></p> <p class="MsoNormal"><span><span>·<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><a href="http://community.devexpress.com/blogs/xpo/archive/2006/04/13/xpo-is-good-for-distributed-applications.aspx">XPO is good for distributed applications</a><span><span></span></span> </span></p> <p class="MsoNormal"><span><span>·<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><a href="http://community.devexpress.com/blogs/xpo/archive/2007/05/16/xpo-beta-feature-sqldependency-support.aspx">XPO Beta feature: SQLDependency support</a><span><span></span></span> </span></p> <p><span>Today is 2011, and we are excited to announce that in v2011 vol1, we greatly improved data caching support in XPO, and added additional functionality to it, allowing this feature to leave the “beta” state.</span></p> </blockquote> <h3>Want data caching via WCF Services? – Now, it’s easy!</h3> <p><span><span><a href="http://community.devexpress.com/blogs/xpo/archive/2011/04/19/xpo-11-1-sneak-peek-wcf-services-for-idatastore.aspx">In the previous blog</a></span></span><span>, we already demonstrated how easy it is in 11.1 to create and use WCF Services for <strong>IDataStore</strong>. If you want to take advantages of XPO data caching using this solution, then the only difference is in using the <strong>ICachedDataStore</strong> interface and a respective base service class that implements this interface – <em>CachedDataStoreService</em>.</span></p> <p><span>Let’s demonstrate it in action (the exact steps on how to add a data store service can be taken from <a href="http://community.devexpress.com/blogs/xpo/archive/2011/04/19/xpo-11-1-sneak-peek-wcf-services-for-idatastore.aspx">the previous blog</a><span><span></span></span>):</span></p> <pre><pre> 1: <span>using</span> DevExpress.Xpo;
</pre><pre> 2: <span>using</span> DevExpress.Xpo.DB;
</pre><pre> 3: …
</pre><pre> 4: <span>public</span> <span>class</span> Service1 : CachedDataStoreService {
</pre><pre> 5: <span>public</span> <span>static</span> ICachedDataStore MainDataStore;
</pre><pre> 6: <span>static</span> Service1() {
</pre><pre> 7: <span>string</span> connectionString = MSSqlConnectionProvider.GetConnectionString("<span>localhost</span>", "<span>ServiceDB</span>");
</pre><pre> 8: IDataStore dataStore = XpoDefault.GetConnectionProvider(connectionString, AutoCreateOption.DatabaseAndSchema);
</pre><pre> 9: MainDataStore = <span>new</span> DataCacheRoot(dataStore);
</pre><pre> 10: }
</pre><pre> 11: <span>public</span> Service1()
</pre><pre> 12: : <span>base</span>(MainDataStore) {
</pre><pre> 13: }
</pre><pre> 14: }</pre></pre>
<p><span>Of course, some modifications of the service binding in the web.config file are necessary as well:</span></p>
<pre><pre> 1: <span>&lt;</span><span>system.serviceModel</span><span>&gt;</span>
</pre><pre> 2: <span>&lt;</span><span>services</span><span>&gt;</span>
</pre><pre> 3: <span>&lt;</span><span>service</span> <span>name</span>=<span>"WcfService1.Service1"</span> <span>behaviorConfiguration</span>=<span>"WcfService1.Service1Behavior"</span><span>&gt;</span>
</pre><pre> 4: <span>&lt;!-- Service Endpoints --&gt;</span>
</pre><pre> 5: <span>&lt;</span><span>endpoint</span> <span>address</span>=<span>""</span> <span>binding</span>=<span>"basicHttpBinding"</span> <span>contract</span>=<span>"DevExpress.Xpo.DB.ICachedDataStoreService"</span><span>&gt;</span>
</pre><pre> 6: <span>&lt;</span><span>identity</span><span>&gt;</span>
</pre><pre> 7: <span>&lt;</span><span>dns</span> <span>value</span>=<span>"localhost"</span><span>/&gt;</span>
</pre><pre> 8: <span>&lt;/</span><span>identity</span><span>&gt;</span>
</pre><pre> 9: <span>&lt;/</span><span>endpoint</span><span>&gt;</span>
</pre><pre> 10: <span>&lt;/</span><span>service</span><span>&gt;</span>
</pre><pre> 11: <span>&lt;/</span><span>services</span><span>&gt;</span>
</pre><pre> 12: <span>&lt;</span><span>behaviors</span><span>&gt;</span>
</pre><pre> 13: <span>&lt;</span><span>serviceBehaviors</span><span>&gt;</span>
</pre><pre> 14: <span>&lt;</span><span>behavior</span> <span>name</span>=<span>"WcfService1.Service1Behavior"</span><span>&gt;</span>
</pre><pre> 15: <span>&lt;</span><span>serviceMetadata</span> <span>httpGetEnabled</span>=<span>"true"</span><span>/&gt;</span>
</pre><pre> 16: <span>&lt;</span><span>serviceDebug</span> <span>includeExceptionDetailInFaults</span>=<span>"false"</span><span>/&gt;</span>
</pre><pre> 17: <span>&lt;/</span><span>behavior</span><span>&gt;</span>
</pre><pre> 18: <span>&lt;/</span><span>serviceBehaviors</span><span>&gt;</span>
</pre><pre> 19: <span>&lt;/</span><span>behaviors</span><span>&gt;</span>
</pre><pre> 20: <span>&lt;/</span><span>system.serviceModel</span><span>&gt;</span>
</pre><pre> 21: </pre></pre>
<p><span></span><span>Fortunately, the client part does not need to be modified, because in our example, the service’s name did not change, and in addition, the “data caching domain” of our service is automatically detected by XPO.</span></p>
<p class="MsoNormal"><span></span></p>
<h3>Data caching configuration</h3>
<p class="MsoNormal"><span>After looking at how easy it is to implement, you may naturally ask how flexible it really is. Of course we did not forget about flexibility! </span></p>
<p><span></span><span>For example, it is possible for you to configure which tables need to be cached and which ones don’t. This option can be useful for tables, which are frequently changed – if they are changed a lot, it makes no sense to cache them. The code below demonstrates how the service above can be modified to configure the DataCacheRoot, to cache only the “Customer” table:</span></p>
<p class="MsoNormal"><span></span></p>
<pre><pre> 1: <span>using</span> DevExpress.Xpo;
</pre><pre> 2: <span>using</span> DevExpress.Xpo.DB;
</pre><pre> 3: <span>using</span> DevExpress.Xpo.DB.Helpers;
</pre><pre> 4: …
</pre><pre> 5: <span>public</span> <span>class</span> Service1 : CachedDataStoreService {
</pre><pre> 6: <span>public</span> <span>static</span> ICachedDataStore MainDataStore;
</pre><pre> 7: <span>static</span> Service1() {
</pre><pre> 8: <span>string</span> connectionString = MSSqlConnectionProvider.GetConnectionString("<span>localhost</span>", "<span>ServiceDB</span>");
</pre><pre> 9: IDataStore dataStore = XpoDefault.GetConnectionProvider(connectionString, AutoCreateOption.DatabaseAndSchema);
</pre><pre> 10: DataCacheRoot dataCacheRoot = <span>new</span> DataCacheRoot(dataStore);
</pre><pre> 11: dataCacheRoot.Configure(
</pre><pre> 12: <span>new</span> DataCacheConfiguration(DataCacheConfigurationCaching.InList, "<span>Customer</span>")
</pre><pre> 13: );
</pre><pre> 14: MainDataStore = dataCacheRoot;
</pre><pre> 15: }
</pre><pre> 16: <span>public</span> Service1()
</pre><pre> 17: : <span>base</span>(MainDataStore) {
</pre><pre> 18: }
</pre><pre> 19: }
</pre><pre> 20: </pre></pre>
<h3>Leveraging SQLDependency</h3>
<p><span>Another configuration option for data caching we would like to tell you about is using SqlDependency feature of MS SQL Server (<a href="http://community.devexpress.com/blogs/xpo/archive/2007/05/16/xpo-beta-feature-sqldependency-support.aspx">see here for the background on that</a><span><span></span></span>)</span><span>. </span><span>Again, a modified service class demonstrates how this can be done:</span></p>
<pre><pre> 1: <span>using</span> DevExpress.Xpo;
</pre><pre> 2: <span>using</span> DevExpress.Xpo.DB;
</pre><pre> 3: <span>using</span> DevExpress.Xpo.DB.Helpers;
</pre><pre> 4: …
</pre><pre> 5: <span>public</span> <span>class</span> Service1 : CachedDataStoreService {
</pre><pre> 6: <span>public</span> <span>static</span> ICachedDataStore MainDataStore;
</pre><pre> 7: <span>static</span> Service1() {
</pre><pre> 8: <span>string</span> connectionString = MSSqlConnectionProvider.GetConnectionString("<span>localhost</span>", "<span>ServiceDB</span>");
</pre><pre> 9: MSSqlConnectionProvider dataStore = (MSSqlConnectionProvider)XpoDefault.GetConnectionProvider(
</pre><pre> 10: connectionString,
</pre><pre> 11: AutoCreateOption.DatabaseAndSchema
</pre><pre> 12: );
</pre><pre> 13: MainDataStore = (ICachedDataStore)MSSql2005SqlDependencyCacheRoot.CreateSqlDependencyCacheRoot(
</pre><pre> 14: dataStore,
</pre><pre> 15: <span>new</span> DataCacheConfiguration(DataCacheConfigurationCaching.InList, "<span>Customer</span>"),
</pre><pre> 16: <span>out</span> objectsToDispose
</pre><pre> 17: );
</pre><pre> 18: }
</pre><pre> 19: <span>public</span> Service1()
</pre><pre> 20: : <span>base</span>(MainDataStore) {
</pre><pre> 21: }
</pre><pre> 22: }</pre></pre>
<p class="MsoNormal"><span></span></p>
<p class="MsoNormal"><span></span></p>
<p class="MsoNormal"><span></span></p>
<p><span>That’s it for this blog. Do you like what you see? Please let us know with your comments! </span></p>
<p class="MsoNormal"><span></span></p>
<p class="MsoNormal"><span>And happy XPOing<img alt="Winking smile" src="http://community.devexpress.com/blogs/xpo/wlEmoticon-winkingsmile_1565C5CA.png">, as always!;-)</span></p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>81</ID>
<Date>2011-04-21T09:12:00+04:00</Date>
<From>Adlay Almeida (AA)</From>
<Subject>WPF and Silverlight Gauge Controls</Subject>
<Text><p>I agree with Brian on this. I love the XtraGauges, but when in the process of choosing one for an app, they all tend too grab too much attention with the color selection and such. These look far simpler and cleaner.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>80</ID>
<Date>2011-04-21T06:16:00+04:00</Date>
<From>Sergio Hernandez</From>
<Subject>AsyncMode for Pivot Grid (available in v2011.1)</Subject>
<Text><p>Cool!!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>79</ID>
<Date>2011-04-21T04:26:00+04:00</Date>
<From>Brian Maxim</From>
<Subject>WPF and Silverlight Gauge Controls</Subject>
<Text><p>Hi, these gauges look the business! It would be nice if the predefined models can be ported over to xtragauges as the current styles look “too busy” with over-done glass effects and multiple scales. These ones are cleaner looking with nicer needle designs- they look more “simplistic”.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>78</ID>
<Date>2011-04-21T04:23:00+04:00</Date>
<From>Mark Miller (DevExpress)</From>
<Subject>Great Indian Developer Summit 2011 - Day One with .NET & DevExpress</Subject>
<Text><p>Hi Reyas,</p>
<p>Thanks! It was my pleasure to be there. I really enjoyed it!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>77</ID>
<Date>2011-04-21T04:04:00+04:00</Date>
<From>Geert Depickere</From>
<Subject>WPF and Silverlight Gauge Controls</Subject>
<Text><p>Seems like you are ahead of the 2011 Roadmap on this one. Nice work.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>76</ID>
<Date>2011-04-21T03:42:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>@Theodore: Thank you for your feedback! I hope you will really enjoy this new approach once you get your hands on 11.1. Please share with us your feeling after that. Thank you in advance!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>75</ID>
<Date>2011-04-20T19:19:00+04:00</Date>
<From>Peter Thorpe</From>
<Subject>AsyncMode for Pivot Grid (available in v2011.1)</Subject>
<Text><p>Cool will it work as normal if you use chart integration or need some modification?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>74</ID>
<Date>2011-04-20T17:54:00+04:00</Date>
<From>Kobus Smit</From>
<Subject>XAF – Model Merge Tool (coming in v2011 vol1)</Subject>
<Text><p>Great! This is an useful enhancement that will save us time. One more step making XAF more RAD.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>73</ID>
<Date>2011-04-20T17:11:00+04:00</Date>
<From>Tony Taylor-Moran</From>
<Subject>WinForms Tab Control - Custom Buttons (coming in v2011 vol 1)</Subject>
<Text><p>Sorry, I don't agree with Chris at all, the assumption that Winforms is legacy doesn’t site right with me, quite a lot of my users are not interested, so I am more inclined to agree with the others.</p>
<p>More attention really does need to be given to the Winforms collection of controls and in particular the MDITab control (My personal request!), the recent offerings haven’t seemed to give me much for the money (although I have a DXperience Enterprise Subscription, I really only use the WinForms controls) – &nbsp;my subscription is due for renewal in May, unless I see something that is worth the renewal fee, I will give one of the other vendors a try.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>72</ID>
<Date>2011-04-20T15:36:00+04:00</Date>
<From>Nate Laff</From>
<Subject>XAF – Model Merge Tool (coming in v2011 vol1)</Subject>
<Text><p>John,</p>
<p>I've toyed with that posibility. I have an Administrator user (that can't be deleted) that I've thought about storing in the file system.</p>
<p>The other problem I need to tackle is if the Administrator makes a change (lets say, adds a variant or filter to a listview) I want those changes to propogate to all user diffs in the DB. I'm planning on just overriding what they have with the updated model (including skin, etc...) but this tool certainly lays the ground work for selective merging. </p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>71</ID>
<Date>2011-04-20T15:26:00+04:00</Date>
<From>John Zhang</From>
<Subject>XAF – Model Merge Tool (coming in v2011 vol1)</Subject>
<Text><p>current I store user models in the DB as well. so is it possible to use this mergy model? if not. is it possible implement a solution that allow some user not store user models in the DB, and some user store user models in the DB</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>70</ID>
<Date>2011-04-20T15:08:00+04:00</Date>
<From>Nate Laff</From>
<Subject>XAF – Model Merge Tool (coming in v2011 vol1)</Subject>
<Text><p>It's beautiful! However, it won't work for me :( I store user models in the DB, rather than file system. Doh!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>69</ID>
<Date>2011-04-20T14:25:00+04:00</Date>
<From>CARLOS MELGAR</From>
<Subject>XAF – Model Merge Tool (coming in v2011 vol1)</Subject>
<Text><p>Seems promising!!! Can't wait to try!!!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>68</ID>
<Date>2011-04-20T14:17:00+04:00</Date>
<From>Jascha</From>
<Subject>XAF – Model Merge Tool (coming in v2011 vol1)</Subject>
<Text><p>Hey - at last. Good work!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>67</ID>
<Date>2011-04-20T12:06:00+04:00</Date>
<From>Reyas Mohammed Ismail</From>
<Subject>Great Indian Developer Summit 2011 - Day One with .NET & DevExpress</Subject>
<Text><p>Hi..</p>
<p>Miller was known to .net developers, but saw him for the first time.. was a great session.. Thanks Miller and DevExpress..</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>65</ID>
<Date>2011-04-20T08:29:00+04:00</Date>
<From>Theodore p</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>It’s always great to see new features in XPO! I attempted to create a publisher using WCF almost three years ago. It turned out to be a nightmare that cost me many days of hard work and ended up in the trash bin. This one looks ridiculously easy! Well done!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>64</ID>
<Date>2011-04-20T08:25:00+04:00</Date>
<From>Crono</From>
<Subject>WinForms Ribbon Control – MacOffice Paint Style and Back Stage View Control (available now in v2011, volume 1)</Subject>
<Text><p>I agree with Heiko Mueller about the MacOffice Ribbon. Same goes with the MacSkin.</p>
<p>You won't fool a regular Mac user into thinking he's running a Mac application. That will just piss him even more to have to run it on a PC when it looks like it could run on his MacBook.</p>
<p>So... unless this is a hint on an upcoming version of the suite with support for Mono, I really don't see the point.</p>
<p>The BackstageViewControl, on the other hand, looks real nice! :D Can't wait to get my hands on it!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>63</ID>
<Date>2011-04-20T05:26:00+04:00</Date>
<From>Hedi Guizani</From>
<Subject>AsyncMode for Pivot Grid (available in v2011.1)</Subject>
<Text><p>This is what we can call a serious feature.</p>
<p>Keep Up The good work !</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>62</ID>
<Date>2011-04-20T05:00:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XAF – Model Merge Tool (coming in v2011 vol1)</Subject>
<Text><p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;">End-users can customize an XAF application user interface at runtime with ease. The Layout Manager, Column Chooser and other capabilities allow end-users to configure a UI in a "<strong>W</strong>hat <strong>Y</strong>ou <strong>S</strong>ee <strong>I</strong>s <strong>W</strong>hat <strong>Y</strong>ou <strong>G</strong>et" way. But when you, as a developer, customize a UI in the </span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><a href="http://help.devexpress.com/#Xaf/CustomDocument2582"><span style=""><span style="text-decoration: underline;"><span style="color: rgb(128, 0, 128);">Model Editor</span></span></span></a></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;">, you have to deal with indexes, widths, heights, groups, etc. So, you may want to customize a UI as an end-user, and then merge changes to one of the </span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><a href="http://help.devexpress.com/#Xaf/CustomDocument2579"><span style=""><span style="text-decoration: underline;"><span style="color: rgb(0, 0, 255);">Application Model</span></span></span></a></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;"> layers in your XAF solution. </span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;"></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);">With the v2011 vol 1 release, we have introduced a new XAF design time functionality - <strong><span style="font-family: 'Verdana','sans-serif';">Model Merge Tool</span></strong>. </span></span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><a href="http://community.devexpress.com/blogs/eaf/ModelMergeTool_0F88FCC0.png"><img src="http://community.devexpress.com/blogs/eaf/ModelMergeTool_thumb_45AA750F.png" alt="ModelMergeTool" title="ModelMergeTool" style="margin: 0px; display: inline;" width="700" height="456"></a></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);">This instrument is intended to merge </span></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><a href="http://help.devexpress.com/#Xaf/CustomDocument2579"><span style=""><span style="text-decoration: underline;"><span style="color: rgb(0, 0, 255);">Application Model</span></span></span></a></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);"> customizations into an underlying model layer. It means that now you can customize a View items layout at run time, and then move down these changes into the module project layer. Of course, the layout is not the only customization that can be merged - you can merge any differences that can be applied to a target model layer. The most evident use cases are merging Detail View and Dashboard layouts, grid customizations (columns order, visibility, grouping, etc), chart and pivot grid settings. </span></span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);">Let us take a closer look on how to use the Model Merge feature with the MainDemo application. Assume that we have customized the <b style="">Resume </b>List View at run time (for instance, changed columns order): </span></span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><a href="http://community.devexpress.com/blogs/eaf/ModelMerge_HowTo_SwapColumns_19214529.png"><img src="http://community.devexpress.com/blogs/eaf/ModelMerge_HowTo_SwapColumns_thumb_573A5FDA.png" alt="ModelMerge_HowTo_SwapColumns" title="ModelMerge_HowTo_SwapColumns" style="display: inline;" width="543" height="199"></a></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;">The customizations we have made are automatically saved to the <i>Model.User.xafml</i> file located in the project output folder:</span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="font-family: 'Verdana','sans-serif'; color: rgb(0, 0, 102); font-size: 8pt;">&lt;ListView </span><span style="font-family: 'Verdana','sans-serif'; color: red; font-size: 8pt;">Id=</span><span style="font-family: 'Verdana','sans-serif'; color: rgb(0, 0, 102); font-size: 8pt;">"Resume_ListView"&gt; <br></span><span style="font-family: 'Verdana','sans-serif'; color: rgb(0, 0, 102); font-size: 8pt;"><span style="">&nbsp; </span>&lt;Columns&gt; <br></span><span style="font-family: 'Verdana','sans-serif'; color: rgb(0, 0, 102); font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span>&lt;ColumnInfo </span><span style="font-family: 'Verdana','sans-serif'; color: red; font-size: 8pt;">Id=</span><span style="font-family: 'Verdana','sans-serif'; color: rgb(0, 0, 102); font-size: 8pt;">"Contact" </span><span style="font-family: 'Verdana','sans-serif'; color: red; font-size: 8pt;">Index=</span><span style="font-family: 'Verdana','sans-serif'; color: rgb(0, 0, 102); font-size: 8pt;">"0" /&gt; <br></span><span style="font-family: 'Verdana','sans-serif'; color: rgb(0, 0, 102); font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span>&lt;ColumnInfo </span><span style="font-family: 'Verdana','sans-serif'; color: red; font-size: 8pt;">Id=</span><span style="font-family: 'Verdana','sans-serif'; color: rgb(0, 0, 102); font-size: 8pt;">"File" </span><span style="font-family: 'Verdana','sans-serif'; color: red; font-size: 8pt;">Index=</span><span style="font-family: 'Verdana','sans-serif'; color: rgb(0, 0, 102); font-size: 8pt;">"1" /&gt; <br></span><span style="font-family: 'Verdana','sans-serif'; color: rgb(0, 0, 102); font-size: 8pt;"><span style="">&nbsp; </span>&lt;/Columns&gt; <br></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; color: rgb(0, 0, 102); font-size: 8pt;">&lt;/ListView&gt; </span></p> <p class="MsoNormal" style="line-height: normal; margin: 0in 0in 3.75pt;" align="justify"><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;">Now let us merge the end-user customizations into the Application Model of the module project. In the <b>Solution Explorer</b>, right click the <b>MainDemo.Win</b> application project and click <b>Merge User Model</b>. In the invoked <b>Open</b> dialog, choose the <i>Model.User.xafml</i> file. As a result, the <b>Model Merge Tool</b> dialog is invoked. Navigate to the <b>Resume_ListView</b> node in the tree list. This node caption is displayed in bold, as the node contains customizations. Use the checkbox to the left to select this node. In the dropdown below, select <b>MainDemo.Module</b> and click <b>Merge</b>. The <b>Resume_ListView</b> node's differences will be merged into the <b>MainDemo.Module</b> project.</span><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;"> </span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><a href="http://community.devexpress.com/blogs/eaf/ModelMerge_HowTo_MergeDialog_0F0CA3FE.png"><img src="http://community.devexpress.com/blogs/eaf/ModelMerge_HowTo_MergeDialog_thumb_22B98D92.png" alt="ModelMerge_HowTo_MergeDialog" title="ModelMerge_HowTo_MergeDialog" style="display: inline;" width="440" height="484"></a></p> <p><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"></span></p> <p class="MsoNormal" style="line-height: normal; margin: 3.75pt 0.75pt 3.75pt 0in;" align="justify"><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;">Finally, click <b>Save</b> to persist changes and close the <b>Model Merge Tool</b> dialog. After that, you can see the <b>Resume_ListView</b> node customizations in the Model Editor invoked for the <b>MainDemo.Module</b> project. </span></p> <p class="MsoNormal" style="line-height: normal; margin: 0in 0in 3.75pt;" align="justify"><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;"></span></p> <p>&nbsp;</p> <p class="MsoNormal" style="line-height: normal; margin: 0in 0in 3.75pt;" align="justify"><a href="http://community.devexpress.com/blogs/eaf/ModelMerge_HowTo_ME_61AB0E2D.png"><img src="http://community.devexpress.com/blogs/eaf/ModelMerge_HowTo_ME_thumb_72AF3C10.png" alt="ModelMerge_HowTo_ME" title="ModelMerge_HowTo_ME" style="display: inline;" width="594" height="331"></a></p> <p><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;"></span></p> <p class="MsoNormal" style="line-height: normal; margin: 0in 0in 3.75pt;" align="justify"><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;">As the differences were moved into a platform-agnostic module, they affect the ASP.NET application as well: </span></p> <p class="MsoNormal" style="line-height: normal; margin: 0in 0in 3.75pt;" align="justify"><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;"></span></p> <p>&nbsp;</p> <p class="MsoNormal" style="line-height: normal; margin: 0in 0in 3.75pt;" align="justify"><a href="http://community.devexpress.com/blogs/eaf/ModelMerge_HowTo_Web_437D5079.png"><img src="http://community.devexpress.com/blogs/eaf/ModelMerge_HowTo_Web_thumb_1E7F9000.png" alt="ModelMerge_HowTo_Web" title="ModelMerge_HowTo_Web" style="display: inline;" width="422" height="204"></a></p> <p><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;"></span></p> <p class="MsoNormal" style="line-height: normal; margin: 0in 0in 3.75pt;" align="justify"><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;"></span></p> <p>&nbsp;</p> <p class="MsoNormal" style="line-height: normal; margin: 3.75pt 0.75pt 3.75pt 0in;" align="justify"><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;">In the <b style="">Model Merge Tool</b>, you can select several nodes at once, and repeat the merging operation as many times as required, before clicking <b>Save</b>. If a part of the selected differences cannot be applied to the selected target, a warning message will be displayed. In this instance, you can try another target (e.g. <b>MainDemo.Module.Win</b>). </span></p> <p class="MsoNormal" style="line-height: normal; margin: 3.75pt 0.75pt 3.75pt 0in;" align="justify"><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;">If your application is already deployed, and one of end-users has a carefully crafted layout, you may want to use this layout in a new version of the application. In this instance, just copy the <i>Model.User.xafml</i> file from the end-user workstation, and select this file in the <b>Open</b> dialog when running the <b>Model Merge Tool</b>. </span></p> <p class="MsoNormal" style="line-height: normal; margin: 3.75pt 0.75pt 3.75pt 0in;" align="justify"><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;">If you want to merge differences from an application or module project into an underlying module, select the <b style="">Merge Model</b> item instead of <b style="">Merge User Model</b> in a project’s context menu. The <b style="">Model Merge Tool</b> will be invoked for the current project in this instance. </span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);"><br>The following video illustrates the Model Merge Tool in use:</span></span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);"></span></span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);"></span></span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);"></span></span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);"></span></span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);"></span></span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);"></span></span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"></span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);">What do you think about this addition to the framework? Please let us know!</span></span></p> <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><span style="color: rgb(0, 0, 0);"><strong>UPDATE</strong>: We have posted a new <a href="http://community.devexpress.com/blogs/eaf/archive/2011/04/22/xaf-merge-user-differences-from-a-custom-model-storage.aspx"><span style="color: rgb(140, 12, 84);">Merge User Differences from a Custom Model Storage</span></a> blog that describes how to merge a user model stored in a database.</span></span></p></Text>
<HasAttachment>true</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>61</ID>
<Date>2011-04-20T04:42:00+04:00</Date>
<From>Rory Becker - DevExpress</From>
<Subject>CodeRush Tip – Quick Navigation</Subject>
<Text><p>After talking to some of the Devs, this is something we're looking to explore in the future along with several other UI improvements.</p>
<p>If you'd like to hasten it's development, a suggestion in the Support Center ( <a rel="nofollow" target="_new" href="http://www.devexpress.com/sc/">http://www.devexpress.com/sc/</a> ) will add weight to this line of development.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>60</ID>
<Date>2011-04-20T04:27:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>@Nate: Again about speed, we would bring more impression of what happens behind the scenes and how it may affect the performance.</p>
<p>When using WCF, &nbsp;queries and results are packed in single batches (the SelectData and ModifyData methods of IDataStore). When using direct queries, the select statements are transported one by one, the update statements may be packed in batches for certain connection providers only.</p>
<p>So, if you have a fast channel with a large ping, WCF may be faster in certain cases, especially if you enable compression for it (there should be an SDK sample, showing how to do this. However, there is no definite answer on what is faster - everything depends on certain situations.</p>
<p>Hope you find this information helpful.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>59</ID>
<Date>2011-04-20T03:11:00+04:00</Date>
<From>Heiko Mueller</From>
<Subject>WinForms Ribbon Control – MacOffice Paint Style and Back Stage View Control (available now in v2011, volume 1)</Subject>
<Text><p>Nice! The long awaited BackstageView looks really good. </p>
<p>But the 'Mac-Style' of Ribbon handling is - in my eyes - a waste of time. We are developing for pc - not mac and the mac variant of ribbons are complete needless - there is no enrichment compared with the 'original' one.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>58</ID>
<Date>2011-04-20T02:07:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>@Glen: Thank you for your input. As always, any published feature in the product should have a demo + docs. This particular one is not an exception. There will be several demos, showing new XPO features.</p>
<p>@Sascha: We are glad to hear that you liked this feature! Thank you for your feedback!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>57</ID>
<Date>2011-04-20T01:18:00+04:00</Date>
<From>Sascha</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>Great to see that. I'm really looking forward to get my hands on this!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>56</ID>
<Date>2011-04-19T21:38:00+04:00</Date>
<From>Kurt Wehrend</From>
<Subject>AsyncMode for Pivot Grid (available in v2011.1)</Subject>
<Text><p>Will this include Silverlight as well?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>55</ID>
<Date>2011-04-19T17:34:00+04:00</Date>
<From>Glen Harvy</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>At last there's something in 2011 that I am really looking forward to.</p>
<p>Can you please zip up the VS Project for this simple example and make it available for download. I can then use that as a training aid as well as a base to build on.</p>
<p>Thanks ...</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>54</ID>
<Date>2011-04-19T16:36:00+04:00</Date>
<From>Jerzy Rozmyslowicz</From>
<Subject>WinForms Ribbon Control – MacOffice Paint Style and Back Stage View Control (available now in v2011, volume 1)</Subject>
<Text><p>Very nice</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>53</ID>
<Date>2011-04-19T15:06:00+04:00</Date>
<From>Nate Laff</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>Dennis, thanks. Yeah, I get the idea of distrubuted services. Was hoping for an additional "Server Mode" effect, where the call is made to the service, and all processing happened on the server end rather than client creating increased performance in scenarios like my own :)</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>52</ID>
<Date>2011-04-19T14:58:00+04:00</Date>
<From>Miles Rush</From>
<Subject>WinForms Ribbon Control – MacOffice Paint Style and Back Stage View Control (available now in v2011, volume 1)</Subject>
<Text><p>Sweet!! Can't wait (especially for the backstage view)!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>51</ID>
<Date>2011-04-19T14:53:00+04:00</Date>
<From>James S K Makumbi</From>
<Subject>Great Indian Developer Summit 2011 - Day One with .NET & DevExpress</Subject>
<Text><p>Hehehehe I have known for years about Miller am just shocked that he was unknown in india. I hope it reflects directly into sales.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>50</ID>
<Date>2011-04-19T14:15:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>@Nate: I doubt whether anything can be faster than a direct call to the database. In any case, the difference in speed between these two methods will not be enough to worry about...</p>
<p>I suggest you review a similar ticket in the Support Center, for more information: <a rel="nofollow" target="_new" href="http://www.devexpress.com/issue=Q309614">www.devexpress.com/issue=Q309614</a></p>
<p>The main point of using WCF for IDataStore is to build distributed client-server applications. For instance, a client can be connected to a middle-tier service and in general you may not know anything about what stays behind this service (database or other services). I hope this makes more sense.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>49</ID>
<Date>2011-04-19T14:02:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>@Paul: The latter class is a part of the OData Provider for XPO. I suggest you check out the <a rel="nofollow" target="_new" href="http://tv.devexpress.com/#ODataIntroductionWebinar">tv.devexpress.com</a> webinar video, for basic information on it.</p>
<p>It is also mentioned at the end of this awesome video: <a rel="nofollow" target="_new" href="http://tv.devexpress.com/#XPOTour">tv.devexpress.com</a> (stop at ~1.05). I hope you find this information helpful.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>48</ID>
<Date>2011-04-19T13:57:00+04:00</Date>
<From>Firat Esmer</From>
<Subject>AsyncMode for Pivot Grid (available in v2011.1)</Subject>
<Text><p>It looks cute and functional. Thanks guys !</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>47</ID>
<Date>2011-04-19T13:10:00+04:00</Date>
<From>Nate Laff</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>Are there speed advantages to this method vs. direct sql queries over the wire in an internet app scenario?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>46</ID>
<Date>2011-04-19T13:00:00+04:00</Date>
<From>Robert Fuchs</From>
<Subject>AsyncMode for Pivot Grid (available in v2011.1)</Subject>
<Text><p>Let me guess: It will not be available in XAF. Right?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>45</ID>
<Date>2011-04-19T11:16:00+04:00</Date>
<From>Bradley Uffner</From>
<Subject>CodeRush Tip – Quick Navigation</Subject>
<Text><p>Would it be possible to have this quick find window use a "normal" visual studio window so that it can &nbsp;be docked in to the UI? &nbsp;I'd like to keep it handy, but it keeps closing its self. &nbsp;It works far better than the Class View, which I currently use to locate classes and members, but class view can remain docked as a tab, while this can't.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>44</ID>
<Date>2011-04-19T10:55:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>Great Indian Developer Summit 2011 - Day One with .NET & DevExpress</Subject>
<Text><p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px;" title="DevExpress at GIDS 2011" alt="DevExpress at GIDS 2011" src="http://community.devexpress.com/blogs/aspnet/IMG_0820_52FD52F9.jpg" width="240" align="right" border="0" height="179"></p> <p>Day one of the fourth annual Great Indian Developer Summit (GIDS 2011) was a blast. This is the first time DevExpress visited India and the summit is a lot of fun so far.</p> <p>About 1000 developers came to the summit today. Between Julian, Rachel, Mark, Gary and myself, we talked with all of them! </p> <p>There was tons of interests in all platforms from WinForms, ASP.NET, ASP.NET MVC, Silverlight, and WPF.</p> <h3>DevExpress Booth</h3> <p>Check out the slick DevExpress booth at GIDS 2011:</p> <p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="DevExpress at GIDS 2011" alt="DevExpress at GIDS 2011" src="http://community.devexpress.com/blogs/aspnet/IMG_0828_65920116.jpg" width="240" border="0" height="179"></p> <h3>Sessions</h3> <p>Saltmarch Media, the event organizer, did a great job promoting the event and sessions. Julian, Mark and Gary had their sessions highlighted by these large boards: </p> <p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="IMG_0823" alt="IMG_0823" src="http://community.devexpress.com/blogs/aspnet/IMG_0823_5CD15CF0.jpg" width="179" border="0" height="240">&nbsp;<img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="IMG_0824" alt="IMG_0824" src="http://community.devexpress.com/blogs/aspnet/IMG_0824_34AE8804.jpg" width="179" border="0" height="240">&nbsp;<img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="IMG_0825" alt="IMG_0825" src="http://community.devexpress.com/blogs/aspnet/IMG_0825_57EB56DC.jpg" width="179" border="0" height="240">&nbsp;<img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="IMG_0826" alt="IMG_0826" src="http://community.devexpress.com/blogs/aspnet/IMG_0826_721B9A33.jpg" width="179" border="0" height="240"></p> <p>Mark Miller gave a great 30 minute keynote about "Stepping into the future of the IDE". He made crazy predictions that the mouse was going to be dead in 25 years!</p> <p>The attendees loved Mark's keynote and session. And they voted him their "favorite speaker of the day". Check out the white board for votes:</p> <p><a href="http://community.devexpress.com/blogs/aspnet/IMG_2355_31280059.jpg"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="IMG_2355" alt="IMG_2355" src="http://community.devexpress.com/blogs/aspnet/IMG_2355_thumb_4D9CA00C.jpg" width="240" border="0" height="180"></a>&nbsp;<a href="http://community.devexpress.com/blogs/aspnet/IMG_2357_4B034881.jpg"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="IMG_2357" alt="IMG_2357" src="http://community.devexpress.com/blogs/aspnet/IMG_2357_thumb_2678A2C7.jpg" width="240" border="0" height="180"></a>&nbsp;<a href="http://community.devexpress.com/blogs/aspnet/IMG_2354_5AE94F42.jpg"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="IMG_2354" alt="IMG_2354" src="http://community.devexpress.com/blogs/aspnet/IMG_2354_thumb_5DAE185F.jpg" width="240" border="0" height="180"></a></p> <h3>Bangalore, India</h3> <p>Bangalore is an amazing city with lots of technical companies, friendly people and great food. Check out these pics of local attractions:</p> <p><a href="http://community.devexpress.com/blogs/aspnet/DSC_0096-1.NEF_1C972F77.jpg"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Lal Bagh in Bangalore" alt="Lal Bagh in Bangalore" src="http://community.devexpress.com/blogs/aspnet/DSC_0096-1.NEF_thumb_1A05D5BB.jpg" width="240" border="0" height="159"></a>&nbsp;<a href="http://community.devexpress.com/blogs/aspnet/DSC_0177_17D8B125.jpg"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Hindu temple" alt="Hindu temple" src="http://community.devexpress.com/blogs/aspnet/DSC_0177_thumb_3CEDD393.jpg" width="240" border="0" height="159"></a>&nbsp;<a href="http://community.devexpress.com/blogs/aspnet/DSC_0156_688E77C2.jpg"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="Tippoo Sultan's Palace" alt="Tippoo Sultan's Palace" src="http://community.devexpress.com/blogs/aspnet/DSC_0156_thumb_6B3F3142.jpg" width="240" border="0" height="159"></a></p> <div class="dxperience-blog-block"> <h4>DXperience? What's That?</h4> <p>DXperience is the .NET developer's secret weapon. Get full access to a complete suite of professional components that let you instantly drop in new features, designer styles and fast performance for your applications. Try a fully-functional version of DXperience for free now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p> </div></Text>
<HasAttachment>true</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>43</ID>
<Date>2011-04-19T10:25:00+04:00</Date>
<From>Paul Cunningham</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>Hello Dennis,</p>
<p>What's the difference between DataStoreService and XPODataService (already defined in DevExpress.Xpo.Services) ?</p>
<p>Regards,</p>
<p>Paul</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>41</ID>
<Date>2011-04-19T07:11:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>@Bjoern:</p>
<p>XAF is still a regular XPO application by its domain, and so it was always possible to build client-server applications, communicating via WCF and other communication channels. </p>
<p>There are some examples in the Support Center and blogs: 1) <a rel="nofollow" target="_new" href="http://search.devexpress.com/?q=WCF&amp;p=T4%7cP2%7c0&amp;d=26">search.devexpress.com</a></p>
<p>2) <a rel="nofollow" target="_new" href="http://community.devexpress.com/blogs/eaf/archive/2008/05/31/xaf-10-advanced-data-layer-features.aspx">community.devexpress.com/.../xaf-10-advanced-data-layer-features.aspx</a></p>
<p>If you need any further assistance on this, please feel free to contact our Support Team.</p>
<p>What we did as part of the feature described in this blog is that we just made it much easier for our customers to build service and client applications communicating via WCF. Now instead of implementing your own IDataStore and other implementations, you can use the out-of-the-box solution with ease - just create a service derived from the standard XPO service class and specify the service's address on the client. That's it.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>40</ID>
<Date>2011-04-19T07:01:00+04:00</Date>
<From>Slava D (DevExpress)</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>@Luca Poretti:</p>
<p>A blog post about data caching is being prepared and will be ready soon.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>39</ID>
<Date>2011-04-19T06:32:00+04:00</Date>
<From>Bjoern Isemann</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>can't wait to see that functionality in XAF in the future. Would be great if you can use a wcf service to build server-client apps with XAF. Thats something i'm missing (or maybe haven't found yet). </p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>38</ID>
<Date>2011-04-19T05:56:00+04:00</Date>
<From>Luca Poretti</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text><p>This is great !</p>
<p>But query on slow wan can be expensive ... Can you expand the example to add caching (with DataCacheRoot on the server and DataCacheNode on the client) ? </p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>37</ID>
<Date>2011-04-19T02:30:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject>XPO – 11.1 Sneak Peek - WCF services for IDataStore</Subject>
<Text>
<p align="justify">In XPO v2011.1 vol 1, we added support for WCF Services. These improvements provide the capability to create service and client for IDataStore as easy as it can only be. </p> <p align="justify">In order to support this feature, the <strong>DevExpress.Xpo</strong> assembly will reference assemblies from .NET 3.0. Unfortunately, Visual Studio 2010 does not allow building projects whose Target Framework is set to 2.0, if they reference .NET 3.0 assemblies. To bypass this, it is necessary to set Target Framework to 3.0. Quite surprisingly, other Visual Studio versions do not demonstrate the above problem. <br>This does not mean that an application will not work on a machine that has only .NET 2.0 installed on it. If the project does not use the functionality of .NET 3.0, it will work just as before. Therefore, it should not affect your clients’ installations at all.</p> <p align="justify">Let’s learn more about the implemented feature from a simple example. <br>For the beginning, we will create a new <em>WCF Service Application</em> project. Then, we will add references to the <em>DevExpress.Data</em> and <em>DevExpress.Xpo</em> assemblies and remove files with auto-generated interfaces for the service.</p> <p align="justify">The next step is modifying the service class as follows:&nbsp; <br> <br></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"></span> </p><p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;">using</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> DevExpress.Xpo; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;">using</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> DevExpress.Xpo.DB; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;">namespace</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> WcfService1 { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">public</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: blue; font-size: 8pt;">class</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">Service1</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> : </span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">DataStoreService</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">public</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: blue; font-size: 8pt;">static</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">IDataStore</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> DataStore; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">static</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> Service1() { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">string</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> connectionString = </span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">MSSqlConnectionProvider</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">.GetConnectionString(</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">"localhost"</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">, </span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">"ServiceDB"</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">); </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DataStore = </span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">XpoDefault</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">.GetConnectionProvider(connectionString, </span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">AutoCreateOption</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">.DatabaseAndSchema); </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">public</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> Service1() </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>: </span><span style="font-family: consolas; color: blue; font-size: 8pt;">base</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">(DataStore) { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;">} </span></p> <p align="justify"></p> <p align="justify">To finish with the service, we will need to change some binding properties in its web.config file:</p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;">&lt;</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">system.serviceModel</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span>&lt;</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">services</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">service</span><span style="font-family: consolas; color: blue; font-size: 8pt;"> </span><span style="font-family: consolas; color: red; font-size: 8pt;">name</span><span style="font-family: consolas; color: blue; font-size: 8pt;">=</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">WcfService1.Service1</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;"> </span><span style="font-family: consolas; color: red; font-size: 8pt;">behaviorConfiguration</span><span style="font-family: consolas; color: blue; font-size: 8pt;">=</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">WcfService1.Service1Behavior</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;!--</span><span style="font-family: consolas; color: green; font-size: 8pt;"> Service Endpoints </span><span style="font-family: consolas; color: blue; font-size: 8pt;">--&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">endpoint</span><span style="font-family: consolas; color: blue; font-size: 8pt;"> </span><span style="font-family: consolas; color: red; font-size: 8pt;">address</span><span style="font-family: consolas; color: blue; font-size: 8pt;">=</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">""</span><span style="font-family: consolas; color: blue; font-size: 8pt;"> </span><span style="font-family: consolas; color: red; font-size: 8pt;">binding</span><span style="font-family: consolas; color: blue; font-size: 8pt;">=</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">basicHttpBinding</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;"> </span><span style="font-family: consolas; color: red; font-size: 8pt;">contract</span><span style="font-family: consolas; color: blue; font-size: 8pt;">=</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">DevExpress.Xpo.DB.IDataStoreService</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">identity</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">dns</span><span style="font-family: consolas; color: blue; font-size: 8pt;"> </span><span style="font-family: consolas; color: red; font-size: 8pt;">value</span><span style="font-family: consolas; color: blue; font-size: 8pt;">=</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">localhost</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">/&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">identity</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">endpoint</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">service</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span>&lt;/</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">services</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span>&lt;</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">behaviors</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">serviceBehaviors</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">behavior</span><span style="font-family: consolas; color: blue; font-size: 8pt;"> </span><span style="font-family: consolas; color: red; font-size: 8pt;">name</span><span style="font-family: consolas; color: blue; font-size: 8pt;">=</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">WcfService1.Service1Behavior</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">serviceMetadata</span><span style="font-family: consolas; color: blue; font-size: 8pt;"> </span><span style="font-family: consolas; color: red; font-size: 8pt;">httpGetEnabled</span><span style="font-family: consolas; color: blue; font-size: 8pt;">=</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">true</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">/&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">serviceDebug</span><span style="font-family: consolas; color: blue; font-size: 8pt;"> </span><span style="font-family: consolas; color: red; font-size: 8pt;">includeExceptionDetailInFaults</span><span style="font-family: consolas; color: blue; font-size: 8pt;">=</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">false</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">"</span><span style="font-family: consolas; color: blue; font-size: 8pt;">/&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">behavior</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">serviceBehaviors</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span>&lt;/</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">behaviors</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;">&lt;/</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">system.serviceModel</span><span style="font-family: consolas; color: blue; font-size: 8pt;">&gt;</span><span style="font-family: consolas; font-size: 8pt;"> </span></p> <p align="justify"></p> <p align="justify">Now our service is ready, and it is time to implement the client part. <br>&nbsp; <br>For the client, we will add a Console Application into our existing solution. Then, we will use the <em>Persistent Object</em> item template for a&nbsp; Customer class: <br> <br><span style="line-height: 115%; font-family: consolas; font-size: 8pt;"><font color="#000000"><span style="font-family: consolas; color: blue; font-size: 8pt;">using</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> DevExpress.Xpo; <br></span></font></span> </p><p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;">namespace</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> ConsoleApplication1 { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">public</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: blue; font-size: 8pt;">class</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">Customer</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> : </span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">XPObject</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">public</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> Customer(</span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">Session</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> session) : </span><span style="font-family: consolas; color: blue; font-size: 8pt;">base</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">(session) { } </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">string</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _CompanyName; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">public</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: blue; font-size: 8pt;">string</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> CompanyName { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">get</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { </span><span style="font-family: consolas; color: blue; font-size: 8pt;">return</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _CompanyName; } </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">set</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { SetPropertyValue(</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">"CompanyName"</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">, </span><span style="font-family: consolas; color: blue; font-size: 8pt;">ref</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _CompanyName, </span><span style="font-family: consolas; color: blue; font-size: 8pt;">value</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">); } </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">string</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _CompanyAddress; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">public</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: blue; font-size: 8pt;">string</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> CompanyAddress { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">get</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { </span><span style="font-family: consolas; color: blue; font-size: 8pt;">return</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _CompanyAddress; } </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">set</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { SetPropertyValue(</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">"CompanyAddress"</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">, </span><span style="font-family: consolas; color: blue; font-size: 8pt;">ref</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _CompanyAddress, </span><span style="font-family: consolas; color: blue; font-size: 8pt;">value</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">); } </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">string</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _ContactName; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">public</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: blue; font-size: 8pt;">string</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> ContactName { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">get</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { </span><span style="font-family: consolas; color: blue; font-size: 8pt;">return</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _ContactName; } </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">set</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { SetPropertyValue(</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">"ContactName"</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">, </span><span style="font-family: consolas; color: blue; font-size: 8pt;">ref</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _ContactName, </span><span style="font-family: consolas; color: blue; font-size: 8pt;">value</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">); } </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">string</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _Country; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">public</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: blue; font-size: 8pt;">string</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> Country { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">get</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { </span><span style="font-family: consolas; color: blue; font-size: 8pt;">return</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _Country; } </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">set</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { SetPropertyValue(</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">"Country"</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">, </span><span style="font-family: consolas; color: blue; font-size: 8pt;">ref</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _Country, </span><span style="font-family: consolas; color: blue; font-size: 8pt;">value</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">); } </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span><span style="">&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">string</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _Phone; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">public</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: blue; font-size: 8pt;">string</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> Phone { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">get</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { </span><span style="font-family: consolas; color: blue; font-size: 8pt;">return</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _Phone; } </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">set</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { SetPropertyValue(</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">"Phone"</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">, </span><span style="font-family: consolas; color: blue; font-size: 8pt;">ref</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> _Phone, </span><span style="font-family: consolas; color: blue; font-size: 8pt;">value</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">); } </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="text-align: justify; margin: 0in 0in 0pt;" class="MsoNormal"><span style="line-height: 115%; font-family: consolas; color: windowtext; font-size: 8pt;">}</span><span style="line-height: 115%; font-family: consolas; font-size: 8pt;"> </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"></p> The final step is to modify the Main() of our console application as shown in the code below: <br> <br> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"></span> </p><p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;">using</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> System; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;">using</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> DevExpress.Xpo; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;">using</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> DevExpress.Xpo.DB; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 8pt;">namespace</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> ConsoleApplication1 { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">class</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">Program</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">static</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: blue; font-size: 8pt;">void</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> Main(</span><span style="font-family: consolas; color: blue; font-size: 8pt;">string</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">[] args) { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">XpoDefault</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">.DataLayer = </span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">XpoDefault</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">.GetDataLayer(</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">"http://localhost:64466/Service1.svc"</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">, </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">AutoCreateOption</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">.DatabaseAndSchema); </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">XpoDefault</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">.Session = </span><span style="font-family: consolas; color: blue; font-size: 8pt;">null</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">; </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">using</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> (</span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">UnitOfWork</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> uow = </span><span style="font-family: consolas; color: blue; font-size: 8pt;">new</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">UnitOfWork</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">()) { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">using</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> (</span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">XPCollection</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">&lt;</span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">Customer</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">&gt; customers = </span><span style="font-family: consolas; color: blue; font-size: 8pt;">new</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> </span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">XPCollection</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">&lt;</span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">Customer</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">&gt;(uow)) { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: blue; font-size: 8pt;">foreach</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> (</span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">Customer</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> customer </span><span style="font-family: consolas; color: blue; font-size: 8pt;">in</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;"> customers) { </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">Console</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">.WriteLine(</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">"Company Name = {0}; ContactName = {1}"</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">, customer.CompanyName, customer.ContactName); </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">Console</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">.WriteLine(</span><span style="font-family: consolas; color: rgb(163, 21, 21); font-size: 8pt;">"Press any key..."</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">); </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: consolas; color: rgb(43, 145, 175); font-size: 8pt;">Console</span><span style="font-family: consolas; color: windowtext; font-size: 8pt;">.ReadKey(); </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; color: windowtext; font-size: 8pt;"><span style="">&nbsp;&nbsp;&nbsp; </span>} </span></p> <p style="line-height: normal; margin: 0in 0in 0pt;" class="MsoNormal"><span style="font-family: consolas; font-size: 8pt;"><font color="#000000">}</font></span></p> <p align="justify">As you can see, we pass the address of our service into the <em>GetDataLayer</em> method of the <em>XpoDefault</em> class. It is very similar to what was already supported for <a href="http://www.devexpress.com/kb=AK3911">Web Services</a>.</p> <p align="justify">Now if we run the service and client parts, we will see the following output: <br><a href="http://community.devexpress.com/blogs/xpo/screenshot_41E112F4.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="screenshot" alt="screenshot" src="http://community.devexpress.com/blogs/xpo/screenshot_thumb_07859D13.png" width="697" border="0" height="362"></a> <br>Take special note that the port number in the connection string may be different. You can check it in the properties of the service project in the Solution Explorer: <br><a href="http://community.devexpress.com/blogs/xpo/screenshot_6A304548.png"><img style="display: inline;" title="screenshot" alt="screenshot" src="http://community.devexpress.com/blogs/xpo/screenshot_thumb_700AE8E1.png" width="592" height="384"></a> <br> <br>Happy XPOing!</p></Text>
<HasAttachment>true</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>36</ID>
<Date>2011-04-19T01:50:00+04:00</Date>
<From>Dean Casey</From>
<Subject>WinForms Tab Control - Custom Buttons (coming in v2011 vol 1)</Subject>
<Text><p>Excellent, I could definitely use that feature.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>35</ID>
<Date>2011-04-18T19:46:00+04:00</Date>
<From>IOANNIS MPOURKELIS</From>
<Subject>WinForms Tab Control - Custom Buttons (coming in v2011 vol 1)</Subject>
<Text><p>Just to remind a suggestion I did some time ago regarding the way Firefox handles tabs.</p>
<p><a rel="nofollow" target="_new" href="http://www.devexpress.com/Support/Center/Issues/ViewIssue.aspx?issueid=S130083">www.devexpress.com/.../ViewIssue.aspx</a></p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>34</ID>
<Date>2011-04-18T19:30:00+04:00</Date>
<From>Sigurd Decroos</From>
<Subject>WinForms Tab Control - Custom Buttons (coming in v2011 vol 1)</Subject>
<Text><p>I third that, although it is a nice 'gadget', it's not something stunning or impressive.</p>
<p>Please, make it possible to split docked windows with the dockamanger, now that would be interesting :).</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>33</ID>
<Date>2011-04-18T19:20:00+04:00</Date>
<From>Chris Seils</From>
<Subject>WinForms Tab Control - Custom Buttons (coming in v2011 vol 1)</Subject>
<Text><p>Winforms is legacy, and the Devexpress winforms product is very mature. &nbsp;I would rather they spent their time on WPF and Silverlight.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>32</ID>
<Date>2011-04-18T17:29:00+04:00</Date>
<From>Jerzy Rozmyslowicz</From>
<Subject>WinForms Tab Control - Custom Buttons (coming in v2011 vol 1)</Subject>
<Text><p>I second that, new features are not introduced lately at all</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>31</ID>
<Date>2011-04-18T16:53:00+04:00</Date>
<From>Hedi Guizani</From>
<Subject>WinForms Tab Control - Custom Buttons (coming in v2011 vol 1)</Subject>
<Text><p>Sorry this is not a new feature I was able to use 2 years ago via some coding</p>
<p>You even provide a semilar solution in code central</p>
<p>Sorry guys but we need more serious features!!!</p>
<p>I know I m not the only customer saying this but I really hope you will come up with a nice surprise with 2011 v1 because WForm users feel very neglected</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>30</ID>
<Date>2011-04-18T16:41:00+04:00</Date>
<From>Rachel Reese (DevExpress)</From>
<Subject>WinForms Ribbon Control – MacOffice Paint Style and Back Stage View Control (available now in v2011, volume 1)</Subject>
<Text><p>Our next release of the Ribbon Control introduces a new MacOffice paint style for the Ribbon Control which emulates the Ribbon interface in Microsoft® Office for Mac, and a BackstageViewControl which emulates the Application Menu found in the Microsoft® Office 2010 applications. </p> <h3>What does the MacOffice paint style look like?</h3> <p>Pretty swanky, if you ask me! Here are a couple screenshots: </p> <p><img style="border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="clip_image002" alt="clip_image002" src="http://community.devexpress.com/blogs/rachelreese/clip_image002_4109A277.jpg" width="656" border="0" height="231"></p> <p>&nbsp;</p> <p><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="clip_image002[4]" alt="clip_image002[4]" src="http://community.devexpress.com/blogs/rachelreese/clip_image0024_29424544.jpg" width="489" border="0" height="102"></p> <p>The main differences in this style fall in a couple places. First, the page group captions (Font, Paragraph, and Styles, in the example below) are aligned across the top instead of the bottom, and the items are always arranged in two rows. Also, for the MacOffice style, the page categories captions are not drawn by default. There are instead two states for the categories: Expanded and Collapsed, and we've animated the transition between them: </p> <p></p> <p>Third, gallery items are laid out in a single row, and scrolled through horizontally. You can also view all, and scroll vertically. Finally, even though RibbonPageGroups doesn't support minimizing in the MacOffice style (as Office for Mac doesn't), we still show the scrollbar, so that users can scroll through the content. </p> <p></p> <h3>How do you use the new BackstageViewControl?</h3> <p>The new release will also contain a new BackstageViewControl, which is similar to Microsoft Office 2010 applications. Once you click the RibbonControl's Application button, the BackstageViewControl will be displayed. Check it out: </p> <p></p> <p>I'm pretty excited -- but what do you guys think about the additions to the Ribbon Control? Let me know!</p></Text>
<HasAttachment>true</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>29</ID>
<Date>2011-04-18T16:31:00+04:00</Date>
<From>Crono</From>
<Subject>WinForms Tab Control - Custom Buttons (coming in v2011 vol 1)</Subject>
<Text><p>Cool! :D</p>
<p>Will this be made for the docked windows as well?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>28</ID>
<Date>2011-04-18T15:14:00+04:00</Date>
<From>Rory Becker - DevExpress</From>
<Subject>CodeRush Tip – Quick Navigation</Subject>
<Text> <p>Quick Navigation is a kind of intelligent search.</p> <p><strong><font size="3">Basic Search:</font></strong></p> <ul> <li>Press <strong>Ctrl+Shift+Q</strong>.</li> <li>Type the (partial) name of a <strong>Type or Member</strong> you’re looking for in the box at the top.</li> </ul> <p><a href="http://community.devexpress.com/blogs/rorybecker/QuickNavigationSearchString_0B9F26CF.png"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="QuickNavigationSearchString" alt="QuickNavigationSearchString" src="http://community.devexpress.com/blogs/rorybecker/QuickNavigationSearchString_thumb_2DA78295.png" width="695" border="0" height="228"></a></p> <ul> <li>As you type, the search results are narrowed and displayed for your perusal.</li> <li>The phrase you typed, is <font color="#ff0000">highlighted in red </font>in each of the results.</li> <li>Select an entry (Enter or Double Click) to jump directly to it.</li> </ul> <p><strong><font size="3">Camel Case Search</font></strong></p> <p>Additionally Quick Navigation will recognise the use of Capital letters to indicate word boundaries</p> <ul> <li>If you type <strong>CHS </strong>this will be interpreted as “<strong>please find me phrases with these letters in sequence</strong>” </li> <li>Found characters are <font color="#ff0000">highlighted in red</font> with<font color="#0000ff"> blue highlights </font>indicating additional capitals which existing between those sought.</li> <li>Note below how the phrase <strong>CHS</strong> has located both “<strong>C</strong>opyAs<strong>H</strong>ex<strong>S</strong>tring” and “<strong>C</strong>SharpEvent<strong>H</strong>andler<strong>S</strong>ervice”</li> </ul> <p><a href="http://community.devexpress.com/blogs/rorybecker/QuickNavigationCopyHexString_6BC09D46.png"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="QuickNavigationCopyHexString" alt="QuickNavigationCopyHexString" src="http://community.devexpress.com/blogs/rorybecker/QuickNavigationCopyHexString_thumb_6A0FD172.png" width="674" border="0" height="228"></a></p> <p><strong><font size="3">Intelligent Searching</font></strong></p> <p>Like the <a href="http://devexpress.com/blogs/rorybecker/archive/2011/04/11/coderush-tip-the-references-toolwindow.aspx">References Tool window</a>, Quick Navigation is intelligent. </p> <p>It is not simply a text search facility. Instead Quick Navigation searches for <strong>Types</strong> or <strong>Members </strong>which match your search criteria. Like the References Tool window, this means that comments and partial matches are excluded from the results, preventing you from having to filter those results out yourself.</p> <p><strong><font size="3">Options</font></strong></p> <p>Quick Navigation hides it’s filter options by default. They can be toggled using the dropdown in the upper right position of this dialog.</p> <p><a href="http://community.devexpress.com/blogs/rorybecker/QuickNavigationFilters_7D508811.png"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="QuickNavigationFilters" alt="QuickNavigationFilters" src="http://community.devexpress.com/blogs/rorybecker/QuickNavigationFilters_thumb_3C4208AD.png" width="406" border="0" height="95"></a></p> <p>The buttons presented represent various restrictions that can be placed on the results brought back. </p> <ul> <li>The first 3 groups of buttons (Types, members and Access) can have their buttons set in any arrangement. </li> <li>The last set of buttons (scope) may have only a single button active at once. </li> </ul> <p>You can restrict </p> <ul> <li>the type of <strong>Types</strong> searched to any combination of <strong>Classes, Interfaces, Structures, Enumerations and Delegates</strong></li> <li>the type of <strong>Members</strong> searched to any combination of <strong>Methods, Properties, Events, Fields and Locals and Parameters</strong></li> <li>the <strong>Access</strong> level of results to any combination of <strong>private, protected, internal (friend), protected internal or public</strong></li> </ul> <p>… and of course you can restrict the S<strong>cope</strong> of the search itself to any of current <strong>File, Namespace, Project, Solution or All files</strong></p> <p>Stay tuned for more Quick Navigation related tips</p></Text>
<HasAttachment>true</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>27</ID>
<Date>2011-04-18T14:20:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET MVC - Code Usability Improvement (available now in v2011.1)</Subject>
<Text><p>Graeme,</p>
<p>Thanks! And it's possible so we'll consider it for a future release. </p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>26</ID>
<Date>2011-04-18T12:02:00+04:00</Date>
<From>Ray Navasarkian (DevExpress)</From>
<Subject>WinForms Tab Control - Custom Buttons (coming in v2011 vol 1)</Subject>
<Text><p>While Rachel is preparing a post&nbsp;to let you all know about our new enhancements to the WinForms Ribbon Control, I thought I'd mention a cool new feature being introduced in our WinForms Tab Control...that of custom buttons within the tab/page container.</p> <p>Here is a short animation that illustrates its use - we've added two custom buttons allowing users to add/delete images&nbsp;within the tab control.</p></Text>
<HasAttachment>true</HasAttachment>
<Folder>Announcements</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>25</ID>
<Date>2011-04-15T18:29:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject> XAF - Model Editor Usability Improvements (coming in v2011 vol1)</Subject>
<Text><p>@All: Thank you for all the comments. We are happy to hear that you liked these improvements!</p>
<p>@James:</p>
<p>Yes, it is in our roadmap for 2011:</p>
<p><a rel="nofollow" target="_new" href="http://www.devexpress.com/Home/Announces/Roadmap-2011.xml#frameworks">www.devexpress.com/.../Roadmap-2011.xml</a></p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>24</ID>
<Date>2011-04-15T13:49:00+04:00</Date>
<From>salim zarepour</From>
<Subject>ASP.NET HTML Editor, Spell Checker & File Manager - Right-To-Left Support (available now in v2011.1)</Subject>
<Text><p>Hi Dude , </p>
<p>It Is Realy Fantastic. you have no idea how much that i was happy when find out this news.</p>
<p>i want to say you are the best .</p>
<p>Dev Express Is The Best And I Love You,</p>
<p>Hope You Success , And I don't know,</p>
<p>just I love you all.</p>
<p>thanksssssssssssssssssssssssssssssssssssssssssss</p>
<p>and if i can doing any thing to help you and your team i am at your serve for free.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>22</ID>
<Date>2011-04-15T06:58:00+04:00</Date>
<From>Graeme Ross</From>
<Subject>ASP.NET MVC - Code Usability Improvement (available now in v2011.1)</Subject>
<Text><p>Great improvement, any chance this will be included for settings/properties.</p>
<p>settings.SettingsPager(sp =&gt; { </p>
<p> &nbsp; &nbsp; sp.AllButton.Visible = true;</p>
<p> &nbsp; &nbsp; sp.AlwaysShowPager = true;</p>
<p> &nbsp; &nbsp; sp.Position = PagerPosition.TopAndBottom;</p>
<p>});</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>23</ID>
<Date>2011-04-15T06:15:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET MVC - Code Usability Improvement (available now in v2011.1)</Subject>
<Text> <p>Available now in the<a href="http://devexpress.com/ClientCenter/Downloads/" target="_blank"> DXperience v2011.1 release</a>, we've introduced a useful improvement for working with the DevExpress ASP.NET MVC Extensions that will help improve code usability.</p> <h3>Add Method For Collections</h3> <p>We're adding a useful new overload for our collections' Add methods. So the fluent HTML code in our MVC Extensions that looked like this:</p> <div><div id="highlighter_103661" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">var column = settings.Columns.Add(</code><code class="csharp string">"Total"</code><code class="csharp plain">);</code></div><div class="line number2 index1 alt1"><code class="csharp plain">column.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;</code></div><div class="line number3 index2 alt2"><code class="csharp plain">column.PropertiesEdit.DisplayFormatString = </code><code class="csharp string">"c"</code><code class="csharp plain">;</code></div></div></td></tr></tbody></table></div></div>
<p>Will now look like this with v2011 volume 1 release:</p>
<div><div id="highlighter_855842" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">settings.Columns.Add(column =&gt; { </code></div><div class="line number2 index1 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">column.FieldName = </code><code class="csharp string">"Total"</code><code class="csharp plain">;</code></div><div class="line number3 index2 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">column.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;</code></div><div class="line number4 index3 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">column.PropertiesEdit.DisplayFormatString = </code><code class="csharp string">"c"</code><code class="csharp plain">;</code></div><div class="line number5 index4 alt2"><code class="csharp plain">})</code></div></div></td></tr></tbody></table></div></div>
<h3>Benefits</h3>
<p>The benefit for you with the new Add method is that it avoids the <strong>var</strong> structure and <strong>makes your code more readable</strong>!</p>
<p>Thanks to a DevExpress customer who asked me during a recent webinar about using more lambda expressions in our MVC extensions.</p>
<p>What do you think of this code improvement? Drop me a line below, thanks!</p>
<div class="dxperience-blog-block">
<h4>Build Your Best - Without Limits or Compromise</h4>
<p>Try the DevExpress ASP.NET MVC Extensions online now: <a href="http://mvc.devexpress.com">http://mvc.devexpress.com</a></p>
<p>Read the latest news about DevExpress ASP.NET MVC Extensions</p>
<p>Download a free and fully-functional version of DXperience now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p>
</div>
<p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>21</ID>
<Date>2011-04-14T11:30:00+04:00</Date>
<From>Leigh Bowers</From>
<Subject>HTML5 and XHTML Strict - New Doctypes Supported for ASP.NET Products (available now in v2011.1)</Subject>
<Text><p>Ah. I see. Thanks for the clarification.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>20</ID>
<Date>2011-04-14T09:00:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>ASP.NET HTML Editor, Spell Checker & File Manager - Right-To-Left Support (available now in v2011.1)</Subject>
<Text>
<p>Check out the new right-to-left feature of the ASP.NET HTML Editor that's <a href="http://devexpress.com/ClientCenter/Downloads/" target="_blank">available now in the DXperience v2011.1 release</a>:</p> <p><img style="display: inline;" title="ASPNET_HTML_EDITOR_RTL" alt="ASPNET_HTML_EDITOR_RTL" src="http://community.devexpress.com/blogs/aspnet/ASPNET_HTML_EDITOR_RTL_5F158D82.gif" width="625" height="464"> <br>Note: Persian text in the ASP.NET HTML Editor above provided by <a href="http://fa.wikipedia.org/wiki/%DA%86%D8%A7%D8%B1%DA%86%D9%88%D8%A8_%D8%AF%D8%A7%D8%AA%E2%80%8C%D9%86%D8%AA" target="_blank">this wiki article</a>.</p> <h3>Right-To-Left Support</h3> <p>Starting with DXperience v2011 volume 1 release, three more DevExpress ASP.NET controls will support right-to-left languages:</p> <ul> <li>ASPxHtmlEditor - ASP.NET HTML Editor </li> <li>ASPxSpellChecker- ASP.NET Spell Checker </li> <li>ASPxFileManager - ASP.NET File Manager </li> </ul> <p>In fact, all <a href="http://devexpress.com/asp">DevExpress ASP.NET</a> controls in the <a href="http://devexpress.com/aspxperience">ASPxperience</a> Library currently provide support for right-to-left languages, like Arabic or Hebrew. This helps you to create international web pages that include support for right-to-left reading order and mirroring of UI elements.</p> <h3>RightToLeft Property</h3> <p>To switch a control from to right-to-left representation, just enable a single property - <strong>RightToLeft</strong>. When this property is on, text flows from right to left in a control and the control itself is mirrored (the layout of its UI elements is reversed).</p> <p>To apply the right-to-left property to all DevExpress web controls within your web application, you can enable our a special option within the web.config file, instead of switching each control's <strong>RightToLeft</strong> property. The <strong>rightToLeft</strong> option can be accessed within the <strong>settings</strong> group of our <strong>devExpress</strong> section:</p> <div id="CodeDiv"> <div><div id="highlighter_453380" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">devExpress</code><code class="xml plain">&gt;</code></div><div class="line number2 index1 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">settings</code> <code class="xml color1">rightToLeft</code><code class="xml plain">=</code><code class="xml string">"false"</code> <code class="xml plain">/&gt;</code></div><div class="line number3 index2 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">compression</code> <code class="xml color1">enableHtmlCompression</code><code class="xml plain">=</code><code class="xml string">"false"</code> <code class="xml color1">enableCallbackCompression</code><code class="xml plain">=</code><code class="xml string">"true"</code></div><div class="line number4 index3 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml color1">enableResourceCompression</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml color1">enableResourceMerging</code><code class="xml plain">=</code><code class="xml string">"false"</code> <code class="xml plain">/&gt;</code></div><div class="line number5 index4 alt2"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">themes</code> <code class="xml color1">enableThemesAssembly</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml plain">/&gt;</code></div><div class="line number6 index5 alt1"><code class="xml spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="xml plain">&lt;</code><code class="xml keyword">errors</code> <code class="xml color1">callbackErrorRedirectUrl</code><code class="xml plain">=</code><code class="xml string">""</code> <code class="xml plain">/&gt;</code></div><div class="line number7 index6 alt2"><code class="xml plain">&lt;/</code><code class="xml keyword">devExpress</code><code class="xml plain">&gt;</code></div></div></td></tr></tbody></table></div></div>
</div>
<p>Watch the <a href="http://tv.devexpress.com/#ASP_RTL_Support">‘Setup Right-To-Left’ video</a> for the DevExpress ASP.NET controls to see how easy it is.</p>
<h3>Available Now in v2011 volume 1</h3>
<p>The new Right-To-Left support feature of our ASP.NET HTML Editor, Spell Checker and File Manager is <a href="http://devexpress.com/ClientCenter/Downloads/" target="_blank">available now in the DXperience v2011 volume 1 release</a>.</p>
<p>&nbsp;</p>
<p>What do you think of this right-to-left support by DevExpress ASP.NET controls? Drop me a line below, thanks.</p>
<p>&nbsp;</p>
<div class="dxperience-blog-block">
<h4>Accept No Limitations - <a href="http://www.devexpress.com/Home/Announces/2010-devproconnections-awards.xml" target="_blank">Voted Best Grid by readers</a> of DevProConnections Magazine for 4 straight years</h4>
<p>The ASPxGridView Suite is a feature-complete grid and editors library for ASP.NET. With blazing fast data loading, extensive data shaping options, and lightweight memory footprint, the ASPxGridView allows you to deliver a highly compelling and effective end-user experience with ease. </p>
<p>Go with the winner - the most decorated ASP.NET Grid Control in the market.</p>
<p>Check out all the great features now: <a href="http://devexpress.com/Products/NET/Controls/ASP/Grid/">ASP.NET Data Grid and Data Editors</a></p>
</div>
<p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>19</ID>
<Date>2011-04-14T07:09:00+04:00</Date>
<From>Rachel Reese (DevExpress)</From>
<Subject>Winforms RichEdit - Document Protection (available now in v2010, volume 2)</Subject>
<Text><p>The RichEdit control now gives you the ability to password protect your documents, so that only authorized users are able to edit the document. You can password protect the whole document, or only defined sections. You can define one user or several users. Plus, it works with Microsoft® Word®! </p>
<h3>How do you use document protection in Rich Editor?</h3>
<p>When you run your project, you should have a "Review" toolbar, similar to the one below. </p>
<p><img src="http://community.devexpress.com/blogs/rachelreese/image_73D43925.png" alt="image" title="image" style="background-image: none; border-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" width="370" border="0" height="209"></p>
<p>Clicking "Protect Document" will add password protection to the whole document, as well as allow you to change the password. This means that only authorized users will be allowed to edit the sections they have permission to edit. Clicking Unprotect will unprotect the document entirely. If you want to protect only part of the document, first you must highlight the portion to protect, then click "Range Editing Permissions." Choose the users and/or groups that can edit that section, and click OK. </p>
<p><img src="http://community.devexpress.com/blogs/rachelreese/SNAGHTML23ae69b5_45B50BDB.png" alt="SNAGHTML23ae69b5" title="SNAGHTML23ae69b5" style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" width="778" border="0" height="561"></p>
<p>You can have multiple users on a section, and different sections can have different permissions. The usernames and groups used here are the same users and groups that were defined in your Microsoft® Word® document. To get the list of usernames and groups contained within the document to display it in the dialog, review the <a href="http://www.devexpress.com/Support/Center/e/E2594.aspx">E2594-How to handle protected document</a> sample. The default list of groups that's shown in the Editing Permissions dialog is not necessarily present in the document. </p>
<p>For example, I can set up a document that has one paragraph that is editable by administrators, and one paragraph editable by employees (see <a href="http://www.devexpress.com/Support/Center/e/E3017.aspx">E3017</a>). When you are logged in, and authorized to edit certain text, it is highlighted and surrounded by brackets. </p>
<p><img src="http://community.devexpress.com/blogs/rachelreese/image_0BF7A381.png" alt="image" title="image" style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" width="371" border="0" height="224"></p>
<p>If you load a Microsoft® Word® document that has protection enabled already, XtraRichEdit will maintain all permissions, and not allow updates to the specified sections of the document until an authorized user has logged in. See example <a href="http://www.devexpress.com/Support/Center/e/E2594.aspx">E2594</a> for more details on how to work with pre-protected documents. </p>
<h3>How do you give users the ability to protect a document?</h3>
<p>If you're using the Ribbon Control, ensure that you've added the Review Bar. This will automatically give your users the ability to protect, unprotect, and edit the ranges of your documents. </p>
<p><img src="http://community.devexpress.com/blogs/rachelreese/image_46A9045F.png" alt="image" title="image" style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" width="786" border="0" height="430"></p>
<h3>How do you protect a document at run-time? </h3>
<p>Simply, with these two lines: </p>
<div><div id="highlighter_285411" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">ProtectDocumentCommand cmd = </code><code class="csharp keyword">new</code> <code class="csharp plain">ProtectDocumentCommand(richEditControl1); </code></div><div class="line number2 index1 alt1"><code class="csharp plain">cmd.Execute();</code></div></div></td></tr></tbody></table></div></div>
<p>If you have version v2010 2.7 or later, you may instead use: </p>
<div><div id="highlighter_309778" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">richEditControl1.Document.Protect();</code></div></div></td></tr></tbody></table></div></div>
<p>If you want to protect only a range of text, or have different users able to edit different ranges of text, you'll need to start by defining the ranges. A DocumentRange works a little like a special bookmark, and defines the start and end points of the editable text. Create a separate DocumentRange for each editable section you want to maintain. For example: </p>
<div><div id="highlighter_15098" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">DocumentRange rangeText = richEditControl1.Document.InsertText(richEditControl1.Document.Range.End,</code></div><div class="line number2 index1 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;</code><code class="csharp string">"This is a range of text."</code><code class="csharp plain">);</code></div></div></td></tr></tbody></table></div></div>
<p>Then, create and add the permissions to each range:</p>
<div><div id="highlighter_917417" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">RangePermissionCollection rangePermissions = richEditControl1.Document.BeginUpdateRangePermissions(); </code></div><div class="line number2 index1 alt1"><code class="csharp plain">rangePermissions.AddRange(CreateRangeWithPermissions(rangeText, </code><code class="csharp string">"Administrators"</code><code class="csharp plain">, </code></div><div class="line number3 index2 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;</code><code class="csharp string">"admin@somecompany.com"</code><code class="csharp plain">)); </code></div><div class="line number4 index3 alt1"><code class="csharp plain">richEditControl1.Document.EndUpdateRangePermissions(rangePermissions);</code></div></div></td></tr></tbody></table></div></div>
<p>where the CreateRangeWithPermissions method is as follows:</p>
<div><div id="highlighter_927200" class="syntaxhighlighter csharp"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp keyword">private</code> <code class="csharp keyword">static</code> <code class="csharp plain">List&lt;RangePermission&gt; CreateRangeWithPermissions(DocumentRange range, </code><code class="csharp keyword">string</code> <code class="csharp plain">group, </code></div><div class="line number2 index1 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">params</code> <code class="csharp keyword">string</code><code class="csharp plain">[] userNames)</code></div><div class="line number3 index2 alt2"><code class="csharp plain">{&nbsp;&nbsp;&nbsp; </code></div><div class="line number4 index3 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">List rangeList = </code><code class="csharp keyword">new</code> <code class="csharp plain">List&lt;RangePermission&gt;();&nbsp;&nbsp;&nbsp; </code></div><div class="line number5 index4 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">foreach</code> <code class="csharp plain">(</code><code class="csharp keyword">string</code> <code class="csharp plain">user </code><code class="csharp keyword">in</code> <code class="csharp plain">userNames)&nbsp;&nbsp;&nbsp; </code></div><div class="line number6 index5 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code></div><div class="line number7 index6 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">RangePermission rp = </code><code class="csharp keyword">new</code> <code class="csharp plain">RangePermission(range);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code></div><div class="line number8 index7 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">rp.Group = group;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code></div><div class="line number9 index8 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">rp.UserName = user;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code></div><div class="line number10 index9 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">rangeList.Add(rp);&nbsp;&nbsp;&nbsp; </code></div><div class="line number11 index10 alt2"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;</code><code class="csharp plain">}&nbsp;&nbsp;&nbsp; </code></div><div class="line number12 index11 alt1"><code class="csharp spaces">&nbsp;&nbsp;&nbsp;</code><code class="csharp keyword">return</code> <code class="csharp plain">rangeList;</code></div><div class="line number13 index12 alt2"><code class="csharp plain">}</code></div></div></td></tr></tbody></table></div></div>
<p>That's it! You have added document protection! </p>
<h3>How does this differ from document restrictions? </h3>
<p><a href="http://www.devexpress.com/Products/NET/Controls/WinForms/Rich_Editor/restrictions.xml">Document restrictions</a> allow you to limit how the user interacts with your document. They give you the ability to control the context menus (e.g. you can disable cut, copy, paste), as well as restrict formatting edits. These restrictions hold for all users of your document. Both features are available today, too! </p>
<p>Any questions? What do you guys think of this feature? Let's chat. :-)</p>
<p>&nbsp;</p>
<h3>More Information </h3>
<p>Examples: <a href="http://www.devexpress.com/Support/Center/e/E3017.aspx">E3017-How to programmatically create a protected document and apply permissions to certain ranges</a>, <a href="http://www.devexpress.com/Support/Center/e/E2594.aspx">E2594-How to handle protected document</a>.</p>
<p>Videos: </p>
<p><a href="http://tv.devexpress.com/#XtraRichEditDocumentProtection;XtraRichEdit.product;1"><img src="http://community.devexpress.com/blogs/rachelreese/image_0ABD616A.png" alt="image" title="image" style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" width="306" border="0" height="172"></a></p>
<p><a href="http://tv.devexpress.com/#XtraRichEditDocumentProtection">Winforms RichEdit Control - Document Protection</a></p>
<p>End-User Documentation: <a href="http://documentation.devexpress.com/#WindowsForms/CustomDocument8580">Ranges with Permissions</a>, <a href="http://documentation.devexpress.com/#InterfaceElementsWin/CustomDocument9350">Edit a Protected Document</a>, <a href="http://documentation.devexpress.com/#InterfaceElementsWin/CustomDocument9344">Protect and Unprotect a Document</a>.</p>
<p>DevExpress #rawks.</p></Text>
<HasAttachment>true</HasAttachment>
<Folder>WinForms</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>18</ID>
<Date>2011-04-13T18:54:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>HTML5 and XHTML Strict - New Doctypes Supported for ASP.NET Products (available now in v2011.1)</Subject>
<Text><p>Leigh,</p>
<p>Thanks and sorry because I wasn't clear enough. I've updated the post and note section.</p>
<p>Also, the topic can be confusing, email me if you have other concerns. </p>
<p>This is a great read for HTML5: <a rel="nofollow" target="_new" href="http://diveintohtml5.org/introduction.html">diveintohtml5.org/introduction.html</a></p>
<p>Thanks.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>17</ID>
<Date>2011-04-13T18:34:00+04:00</Date>
<From>Graeme Ross</From>
<Subject>CodeRush Tip – Enhance Studio’s Find command</Subject>
<Text><p>Gold</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>16</ID>
<Date>2011-04-13T17:39:00+04:00</Date>
<From>Leigh Bowers</From>
<Subject>HTML5 and XHTML Strict - New Doctypes Supported for ASP.NET Products (available now in v2011.1)</Subject>
<Text><p>Sorry, but I'm confused by the "Note" statement.</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>ASP</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>15</ID>
<Date>2011-04-13T09:00:00+04:00</Date>
<From>Mehul Harry (DevExpress)</From>
<Subject>HTML5 and XHTML Strict - New Doctypes Supported for ASP.NET Products (available now in v2011.1)</Subject>
<Text>
<p><img style="display: inline; float: right;" title="DevExpress ASP.NET &amp; HTML 5" alt="DevExpress ASP.NET &amp; HTML 5" src="http://www.w3.org/html/logo/downloads/HTML5_Logo_256.png" width="256" align="right" height="256"></p> <p>Have you been using or experimenting with HTML5? You may have run into issues trying to use DevExpress controls in HTML5 documents because of doctype conflicts. We're happy to announce that these issues will be fixed in DXperience v2011 volume 1 release and you'll be able to use DevExpress ASP.NET controls in most HTML5 documents. And the support is cross browser so you can do it with Microsoft Internet Explorer 6.0+, Mozilla FireFox 2.0+, Google Chrome 1.0+, Apple Safari 3.0+, Opera 9.0+ and Netscape Navigator 9.0+ are fully supported.</p> <p>Here are the technical details in case that you can <a href="http://devexpress.com/ClientCenter/Downloads/" target="_blank">take advantage of now with the DXperience v2011 volume 1 release</a>:</p> <p>The <a href="http://en.wikipedia.org/wiki/HTML5" target="_blank">HTML5</a> and XHTML Strict standards support by <a href="http://devexpress.com/asp" target="_blank">DevExpress ASP.NET</a> means that you'll have a choice of using 3 different doctype declarations:</p> <ul> <li>XHTML 1.0 Transitional - Current </li> <li>XHTML 1.0 Strict - v2011.1 </li> <li>HTML5 !!! - v2011.1 </li> </ul> <h3>Why?</h3> <p>Several of you, our customers, had requested support for the XHTML Strict standard because of your project requirements. </p> <p>So at our annual roadmap meeting in December 2010, we, the DevExpress ASP.NET team decided to add the HTML5 standard because <a href="http://techcrunch.com/2010/04/30/microsoft-html5/" target="_blank">HTML5 is the future</a>!</p> <p>Note: The code generated by DevExpress ASP.NET controls will be valid XHTML 1.0 Transitional and <strong>it will work just fine in the other doctypes</strong>. However, please note that if your doc is another doctype like HTML5, etc. the controls will work but if you check it with an HTML validator you'll probably see warnings due to the doctype conflict. It's nothing to worry about but we wanted to be clear.</p> <h3>MVC Project Templates - New Doctype(s)</h3> <p>For v2011 volume 1, we've updated our <a href="http://community.devexpress.com/blogs/aspnet/archive/2011/01/31/asp-net-mvc-3-project-templates.aspx" target="_blank">ASP.NET MVC DevExpress Project Templates</a> to support:</p> <p>ASP.NET MVC 2 - XHTML Strict</p> <div id="CodeDiv"> <div><div id="highlighter_936523" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>"&gt;</code></div></div></td></tr></tbody></table></div></div>
</div>
<p>ASP.NET MVC 3 - HTML5</p>
<div id="CodeDiv">
<div><div id="highlighter_744367" class="syntaxhighlighter xml"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="xml plain">&lt;!DOCTYPE HTML&gt;</code></div></div></td></tr></tbody></table></div></div>
</div>
<p>These doctypes match Microsoft's ASP.NET MVC Web Application Templates.</p>
<h3>Cross-Browser Support</h3>
<p>The DevExpress ASP.NET controls are already cross-browser compliant because they support the <a href="http://www.devexpress.com/Products/NET/Controls/ASP/Core/xhtml.xml" target="_blank">XHTML 1.0 Transitional</a> standard. This means that you can use DevExpress ASP.NET controls with these popular browsers:</p>
<blockquote>
<p>Microsoft Internet Explorer 6.0+, Mozilla FireFox 2.0+, Google Chrome 1.0+, Apple Safari 3.0+, Opera 9.0+ and Netscape Navigator 9.0+ are fully supported.</p>
</blockquote>
<h3>&nbsp;</h3>
<p>This announcement has me very excited, what about you?</p>
<p>Drop me a line below with your thoughts about the upcoming HTML5 and XHTML Strict support in DXperience ASP.NET v2011 volume 1. Thanks.</p>
<div class="dxperience-blog-block">
<h4>Build Your Best - Without Limits or Compromise</h4>
<p>Try the DevExpress ASP.NET MVC Extensions online now: <a href="http://mvc.devexpress.com">http://mvc.devexpress.com</a></p>
<p>Read the latest news about DevExpress ASP.NET MVC Extensions</p>
<p><a href="http://go.microsoft.com/?linkid=9769549" target="_blank"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="VS 2010 1st Bday" alt="VS 2010 1st Bday" src="http://community.devexpress.com/blogs/aspnet/VS-2010-1st-Bday_5057848A.jpg" width="413" border="0" height="215"></a></p>
<p>Download a free and fully-functional version of DXperience now: <a href="http://www.devexpress.com/Downloads/NET/">http://www.devexpress.com/Downloads/NET/</a></p>
</div>
<p><a href="http://www.twitter.com/MehulHarry"><img alt="Follow MehulHarry on Twitter" src="http://twitter-badges.s3.amazonaws.com/follow_me-a.png"></a></p>
</Text>
<HasAttachment>true</HasAttachment>
<Folder>ASP</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>14</ID>
<Date>2011-04-13T03:04:00+04:00</Date>
<From>James Zhong</From>
<Subject> XAF - Model Editor Usability Improvements (coming in v2011 vol1)</Subject>
<Text><p>Hope XAF 2011 supports better Web UI !</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>13</ID>
<Date>2011-04-13T01:18:00+04:00</Date>
<From>Kobus Smit</From>
<Subject> XAF - Model Editor Usability Improvements (coming in v2011 vol1)</Subject>
<Text><p>Great stuff! Thanks!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>12</ID>
<Date>2011-04-12T15:50:00+04:00</Date>
<From>Arjan van Dijk</From>
<Subject> XAF - Model Editor Usability Improvements (coming in v2011 vol1)</Subject>
<Text><p>I like what I see. Pure convenience. </p>
<p>Keep up the good work guys!</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>11</ID>
<Date>2011-04-12T11:34:00+04:00</Date>
<From>Steven Rasmussen</From>
<Subject> XAF - Model Editor Usability Improvements (coming in v2011 vol1)</Subject>
<Text><p>Very nice! &nbsp;These have been needed for quite a while now. &nbsp;Thanks!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>9</ID>
<Date>2011-04-12T09:11:00+04:00</Date>
<From>Adam Lonsdale</From>
<Subject>CodeRush Tip – Enhance Studio’s Find command</Subject>
<Text><p>Lifesaver! Thank you so much for pointing this out, will save a huge amount of time (:</p>
</Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>8</ID>
<Date>2011-04-12T09:07:00+04:00</Date>
<From>Nate Laff</From>
<Subject> XAF - Model Editor Usability Improvements (coming in v2011 vol1)</Subject>
<Text><p>All great improvements. Particularly like the image gallery. So simple, but goes a long way to improve usability!</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>7</ID>
<Date>2011-04-12T08:59:00+04:00</Date>
<From>Rory Becker - DevExpress</From>
<Subject>CodeRush Tip – The References Toolwindow</Subject>
<Text><p>@Erin sorry Erin AFAIK this isn't possible. </p>
<p>However there is another feature that you might try looking at called QuickNav. </p>
<p>I'll be posting on this soon, but in essence it's a Quick Search for Types Etc</p>
<p>Trigger it with Ctrl+Shift+Q and be sure to explore the drop down set of options on the right</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>6</ID>
<Date>2011-04-12T08:50:00+04:00</Date>
<From>Erin Leary</From>
<Subject>CodeRush Tip – The References Toolwindow</Subject>
<Text><p>I love this feature for finding references, and have been using it for a while to find references when I have the cursor over a type. But maybe I'm missing it, how can I search for a type I type in? For example, I want to find all references of "EmailUtility" but I'm in some random piece of code that doesn't use it. Is there a way to press Ctrl-F12 and type EmailUtility for it to find all references?</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>10</ID>
<Date>2011-04-12T08:00:00+04:00</Date>
<From>Rory Becker - DevExpress</From>
<Subject>CodeRush Tip – Enhance Studio’s Find command</Subject>
<Text><p><strong>“How can I easily return to where I started having used Visual Studio’s find command to locate something?”</strong></p> <p>One way of achieving this is….</p> <ul> <li>Drop a marker (<strong>Alt+Home</strong>) before you perform your search. </li> <li>Hit <strong>Esc </strong>to return to the marker when you’re finished looking around. </li> </ul> <p>However that’s a lot to remember to do, so why not have CodeRush automate a little more for you.</p> <ul> <li>Create a new shortcut (<a href="http://community.devexpress.com/blogs/rorybecker/archive/2010/10/05/binding-keys-in-coderush.aspx">Details here</a>) </li> <li>Set key 1 to <strong>Ctrl+F</strong> </li> <li>Set command to <strong>MarkerDrop</strong> </li> <li>Check the checkbox that says “<strong>after executing this command, pass shortcut to IDE for default handling</strong>” </li> <li>Set context to <strong>Focus\Documents\Source\Code Editor</strong> </li> <li>Click Ok </li> </ul> <p>CodeRush should now drop a marker whenever you bring up the Find Dialog. which means you only have to remember to hit <strong>Esc </strong>to collect them.</p> <p><strong>Bonus marker facts</strong></p> <ul> <li>Markers are stored in a stack formation so that they leave a sort of trail of breadcrumbs. </li> <li>Each successive press of <strong>Alt+Home adds a marker</strong> to the top of the stack. </li> <li>Pressing <strong>Esc “Collects” a marker</strong>, removing it from the top of the stack and navigating you to the location it represents. </li> <li>Collecting a marker doesn’t just restore you to the position in the file it represents, it also <strong>restores the view and selection</strong>. </li> <li>Markers are also removed from the stack when the files they refer to are closed. </li> </ul></Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>5</ID>
<Date>2011-04-12T03:32:00+04:00</Date>
<From>John Newcombe</From>
<Subject>CodeRush Tip – The References Toolwindow</Subject>
<Text><p>Thanks for the tip, I've been doing the Search in Files for too long, how easy is this and not too mention quick.</p></Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>4</ID>
<Date>2011-04-12T02:00:00+04:00</Date>
<From>Dennis (DevExpress Support)</From>
<Subject> XAF - Model Editor Usability Improvements (coming in v2011 vol1)</Subject>
<Text>
<p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000">When you develop XAF applications, you work not only within the Visual Studio code editor, but use </font></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><a href="http://help.devexpress.com/#Xaf/CustomDocument2843"><span style=""><u><font color="#0000ff">XAF design-time features</font></u></span></a></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000"> intensively. </font></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><a href="http://help.devexpress.com/#Xaf/CustomDocument2582"><span style=""><u><font color="#0000ff">Model Editor</font></u></span></a></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000"> is the designer that you use most often, so its usability is critical. Let us consider the improvements we made in the upcoming release. </font></span></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><b style=""><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000"> <br> <br>Image, Criteria and Edit Mask editors </font></span></b></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000">There are string properties that specify image names, e.g. IModelClass.ImageName, IModelAction.ImageName, etc. Previously, you had to type an image name manually. Now you can browse the available images within the <b style="">Image gallery </b>dialog. </font></span></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><a href="http://community.devexpress.com/blogs/eaf/screenshot_586A58EA.png"><img style="display: inline;" title="screenshot" alt="screenshot" src="http://community.devexpress.com/blogs/eaf/screenshot_thumb_6176E46B.png" width="641" height="462"></a></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000">To specify criteria expressions in the Model Editor, you should be familiar with the </font></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><a href="http://documentation.devexpress.com/#XPO/CustomDocument4928"><span style=""><u><font color="#0000ff">Criteria Language Syntax</font></u></span></a></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000">. Certainly, every experienced XAF developer knows it well, but what about application administrators who also may have to deal with the Model Editor? Now, the Criteria Editor dialog is available for properties that represent criteria expressions. </font></span></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><a href="http://community.devexpress.com/blogs/eaf/screenshot_2DCE780D.png"><img style="display: inline;" title="screenshot" alt="screenshot" src="http://community.devexpress.com/blogs/eaf/screenshot_thumb_777D4FFD.png" width="641" height="410"></a></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000">Now, you can specify an appropriate Edit Mask with ease, as the Mask Editor dialog is available. </font></span></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><a href="http://community.devexpress.com/blogs/eaf/screenshot_366ED099.png"><img style="display: inline;" title="screenshot" alt="screenshot" src="http://community.devexpress.com/blogs/eaf/screenshot_thumb_311FE9E8.png" width="641" height="627"></a></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><b style=""><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000"></font></span></b></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><b style=""><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000"> <br> <br>Nodes grouping </font></span></b></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000">In a node’s context menu, you can see the Group/Ungroup command. Currently, you can group child nodes by the namespaces of their associated objects. The screenshot below illustrates the grouped Views node. With this feature, you can easily separate Views of your custom business objects from Views of objects declared in other XAF modules. </font></span></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><a href="http://community.devexpress.com/blogs/eaf/screenshot_2FDB5109.png"><img style="display: inline;" title="screenshot" alt="screenshot" src="http://community.devexpress.com/blogs/eaf/screenshot_thumb_2E96B82A.png" width="568" height="486"></a></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000">You can also group <b style="">Action</b>, <b style="">Class</b> and <b style="">Controller</b> nodes. </font></span></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><b style=""><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000"></font></span></b></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><b style=""><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000"> <br> <br>Linked nodes </font></span></b></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000">Now you can find that many nodes have a “virtual” child node named <b style="">Links</b>. Under this node, you can see nodes that contain references to the current node. The screenshot below illustrates the <b style="">Department</b> node of the <b style="">IModelClass</b> type. Within the <b style="">Links</b> node, you can see the Creatable Item for the Department object, Members of the Department type and Views designed for the Department type. </font></span></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><a href="http://community.devexpress.com/blogs/eaf/screenshot_2D521F4B.png"><img style="display: inline;" title="screenshot" alt="screenshot" src="http://community.devexpress.com/blogs/eaf/screenshot_thumb_6524636E.png" width="566" height="459"></a></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000">You can edit properties of linked nodes in place, or navigate to an actual node location via the <b style="">Go to Source Node</b> command. </font></span></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><b style=""><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000"></font></span></b></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><b style=""><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000"> <br> <br>Standalone Model Editor Improvements </font></span></b></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000">The standalone Model Editor can</font></span><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"><font color="#000000"> </font><span style="color: black;">be used by application administrators to edit a model of the deployed ASP.NET application or Windows Forms application with the <b>Edit Model</b> action disabled. Previously, to start the standalone Model Editor, you had to pass the configuration filename or a module assembly filename as a command-line parameter. Now you can run it without parameters, and select the required file in the Open Model dialog. </span></span></p> <p style="line-height: normal; margin: 0in 0in 3.75pt;" class="MsoNormal" align="justify"><a href="http://community.devexpress.com/blogs/eaf/screenshot_2ED33B5F.png"><img style="display: inline;" title="screenshot" alt="screenshot" src="http://community.devexpress.com/blogs/eaf/screenshot_thumb_0D7395C3.png" width="621" height="367"></a></p> <p style="line-height: normal; margin: 0in 0in 3.75pt;" class="MsoNormal" align="justify"><span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt;">To edit the Application Model of the deployed XAF application, you should specify the configuration file name only. An option to choose an assembly file and model differences path provides the ability to edit the model of a specific module outside of Visual Studio. </span></p> <p style="margin: 0in 0in 10pt;" class="MsoNormal" align="justify"><span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 8pt;"></span></p> <p align="justify"><font color="#000000">&nbsp;</font></p></Text>
<HasAttachment>true</HasAttachment>
<Folder>Frameworks</Folder>
<IsReply>false</IsReply>
</Messages>
<Messages>
<ID>2</ID>
<Date>2011-04-11T14:25:00+04:00</Date>
<From>Phillip Jacobs</From>
<Subject>CodeRush Tip – The References Toolwindow</Subject>
<Text><p>oops... &nbsp;The link I included is cool but this is the one I actually wanted to reference. <a rel="nofollow" target="_new" href="http://tinyurl.com/3b8a2rl">http://tinyurl.com/3b8a2rl</a></p></Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>1</ID>
<Date>2011-04-11T14:04:00+04:00</Date>
<From>Phillip Jacobs</From>
<Subject>CodeRush Tip – The References Toolwindow</Subject>
<Text><p>Yeah, this is one of my favorite features. &nbsp;And it crushes Resharper in performance. &nbsp;See: <a rel="nofollow" target="_new" href="http://tinyurl.com/3ldcn55">http://tinyurl.com/3ldcn55</a></p></Text>
<HasAttachment>false</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>true</IsReply>
</Messages>
<Messages>
<ID>3</ID>
<Date>2011-04-11T12:22:00+04:00</Date>
<From>Rory Becker - DevExpress</From>
<Subject>CodeRush Tip – The References Toolwindow</Subject>
<Text> <p><strong><font size="3">What does it do?</font></strong></p> <p>The References Toolwindow shows you every reference to a specified type or identifier (solution wide). It is triggered either using the <strong>DevExpress\Tool Windows\References </strong>menu or by using it’s default shortcut of <strong>[Shift] +[F12]</strong></p> <p><strong><font size="3">Why is this different from “Find in Files”?</font></strong></p> <p><strong>Intelligent search </strong></p> <p>Put simply, “Find in Files” is not very clever. </p> <p>Imagine that you inherit a large legacy application, and are informed that there is a global variable called “<strong>str</strong>”. You’d like to get some idea of how often this variable is accessed…. some sense of how tightly or loosely coupled it is to the rest of the system.</p> <p>Before the References Tool window, your best bet was Visual Studio’s “Find in Files” feature. This will find you every minor reference to str anywhere in your search range. It will blindly find you references, comments and even partials, but this isn’t always very useful.</p> <p>Can you imagine how many hits you’re going to get back searching for references to ‘<strong>str</strong>’? You’d get hits on <strong>string</strong>, <strong>instruction</strong>, <strong>tostring</strong>, <strong>stretch</strong>, <strong>strong</strong>, <strong>strange</strong>, and of course any <strong>comment </strong>with any of the previous words and more in it. That is a lot of false positives.</p> <p>The References Tool window provides an intelligent search, picking up only references to the identifier in question.</p> <p><strong>Presentation of Results</strong></p> <p>The results are displayed (by default) in a tool window split left and right (see below). </p> <ul> <li>The<strong> left side</strong> is the main <strong>tree of results</strong> arranged in a tree by project, files namespaces etc. </li> <li>The <strong>right side</strong> is used for showing a <strong>preview of the selected result in situ</strong>. </li> </ul> <p><a href="http://community.devexpress.com/blogs/rorybecker/ReferencesToolWindowDisplay_60EB0D02.png"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="ReferencesToolWindowDisplay" alt="ReferencesToolWindowDisplay" src="http://community.devexpress.com/blogs/rorybecker/ReferencesToolWindowDisplay_thumb_7116D4FB.png" width="893" border="0" height="177"></a></p> <p>Single clicking or otherwise selecting any single result in the list on the left, will cause the preview window on the right to be updated to show the result in question along with any surrounding code to give added contextual information.</p> <p><strong><font size="3">Command vs. Live Sync mode</font></strong></p> <p>The References Toolwindow can operate in 2 different modes. </p> <p><a href="http://community.devexpress.com/blogs/rorybecker/ReferencesCommandMode_3A0DF097.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="ReferencesCommandMode" alt="ReferencesCommandMode" src="http://community.devexpress.com/blogs/rorybecker/ReferencesCommandMode_thumb_6722DD65.png" width="254" border="0" height="46"></a>&nbsp; OR <a href="http://community.devexpress.com/blogs/rorybecker/referencesLiveSync_78933E3D.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="referencesLiveSync" alt="referencesLiveSync" src="http://community.devexpress.com/blogs/rorybecker/referencesLiveSync_thumb_1EF52189.png" width="152" border="0" height="46"></a></p> <p>When pushed, these buttons will change the mode, displaying at all times whichever is the current mode. </p> <p>In <strong>Command mode</strong> the References Toolwindow will wait for you to explicitly click the refresh button (on the far left of it’s toolbar), before refreshing it’s contents based on the identifier at the caret.. </p> <p>In <strong>Live Sync mode</strong> CodeRush will refresh the References window every time you move the caret from one identifier to another.</p> <p><strong><font size="3">Manipulating the results</font></strong></p> <p><strong><a href="http://community.devexpress.com/blogs/rorybecker/ReferencesToolbar_7344578C.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="ReferencesToolbar" alt="ReferencesToolbar" src="http://community.devexpress.com/blogs/rorybecker/ReferencesToolbar_thumb_726BF1A2.png" width="667" border="0" height="45"></a></strong></p> <p>The buttons after the <strong>mode toggle</strong> allow you to manipulate how the results are displayed.</p> <ul> <li>The first 2 buttons allow you to <strong>sort references </strong>by either Reference Count or Alphabetically. </li> <li>The next 5 buttons <strong>toggle hierarchy elements</strong> in the results. (ie Projects, Files, Namespaces, Classes and Methods in the Tree of results. </li> <li>The next 2 buttons allow you to <strong>alter the font size</strong> of the results in the tree. </li> <li>The next 3 buttons let you pick a <strong>preview location</strong> (right, bottom or off.) </li> <li>The final button determines if the <strong>progress indicator</strong> shows up when references are being calculated. </li> </ul> <p><strong><font size="3">How Fast is it?</font></strong></p> <p>Another good question. I decided to put that to the test. I went out and tried to find the largest open source solution I could. So that others might duplicate my test.</p> <p>After a little searching I came across SharpDevelop. This is a pretty well known open source IDE. An alternative, if you will, to Visual studio. It’s a pretty complex project with over <strong>750, 000</strong> lines of code.</p> <p>I loaded up the primary solution and had a look around. I was looking for something that would produce a lot of results, to really push the References Tool window.</p> <p>Then it hit me….. “Let’s search for references to <strong>string.</strong>” There should be more than a few of those in a solution this size.. right?</p> <p>So I found an initial reference to string, and hit [Shift]+[F12]</p> <p><a href="http://community.devexpress.com/blogs/rorybecker/ReferencesToolWindow_759DD98A.png"><img style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="ReferencesToolWindow" alt="ReferencesToolWindow" src="http://community.devexpress.com/blogs/rorybecker/ReferencesToolWindow_thumb_282136FD.png" width="1003" border="0" height="242"></a></p> <p>As you can see from the results. I got back more than 16000 references in ~6 seconds including the time it took to populate the results window. In the real world, you’re not typically going to be searching for something that prolific. but even if you are, 6 seconds is a pretty quick time to get your results back in.</p> <p>For what it’s worth… if I had used “Find In Files”, I’d have got back <strong>21,933</strong> references in <strong>2316</strong> files. That’s over <strong>5717</strong> extra results I didn’t want or need. These would have included partial matches and comments that might have had nothing to do with the type I was actually searching for.</p> <p>Ah and did I mention that this works with C#', VB.Net, C++ and even JavaScript.</p></Text>
<HasAttachment>true</HasAttachment>
<Folder>IDE Tools</Folder>
<IsReply>false</IsReply>
</Messages>
</NewDataSet>