+1-888-365-2779
Try Now
More in this section
Categories
Bloggers
Blogs RSS feed

Removing child views from the View

by Ivan Osmak

[This post is part of the developer's manual preview published on this blog. You can find temporary TOC here.]

 
[This article requires Sitefinity 3.6 hotfix to be installed

 

In the article preceding this one, we have seen how one can add a brand new child view to a View. In this article we will do exactly the opposite. We are going to remove an existing child view from a View.
The principle for removing the child view is basically the same as for adding it, though instead of the add method, this time we will use remove method.

 

Scenario: cripple the Events module

 

Our ever demanding boss has decided that “Geomapping settings” has no business in the Events module and she wants it gone. Once we are done there should be no user interface command for accessing Geomapping settings, nor should there be any other way to access it. To refresh your memory and get a clearer picture of what are we about to do, take a look at the following image.

 


 

Implementation


As it was the case with adding a new child view, yet again we need an ability to access the child views collection of a host view in order to remove the view. Since we are working with the Events module this time, the root view which is the host to GeomappingSettingsView is EventsControlPanel.

 

To remove the GeomappingSettingsView, all we need to do is set the following declaration in our Controls Config file.

<?xml version="1.0" encoding="utf-8"?> 
<controlsConfig> 
  <viewMap> 
    <!--Root view of the Events module.--> 
    <viewSettings hostType="Telerik.Events.WebControls.Admin.EventsControlPanel"
      <views> 
        <remove name="GeomappingSettingsView`1" /> 
      </views> 
    </viewSettings> 
  </viewMap> 
</controlsConfig> 
 

As you can see, our logic is exactly the same as it was when we were adding a new view, but this time we are removing the View. 

 

2 comments

Leave a comment
  1. Romi Feb 25, 2009
    Hi, Thanks for this Manual on fly.
    Could you make this same issue codebehind. For sample if some user has role "Custom" remove pthis child view.
  2. Ivan Feb 25, 2009
    Hi Romi,

    yes, of course, it is possible to handle the Views in the code - Controls Config file is just an alternative. ViewModeControl (and ViewModeUserControl) base classes have a virtual Method "CreateViews" which is called to create child views. So in this method, you can implement various conditions such as user role in your example and decide which child View you will create and which one you will not. You can find more information on this subject in this article: http://blogs.sitefinity.com/Ivan/Posts/09-02-19/Sitefinity_3_6_new_backend_architecture_-_What_are_Views.aspx

    If you are looking for doing this for one of the built-in Views, you can apply the technique of replacing Views, which is described in this article: http://blogs.sitefinity.com/Ivan/Posts/09-02-25/Replacing_a_child_view_with_another_one.aspx . What you would do is basically, create a new implementation of the desired host View, override the CreateViews method and put your conditioning logic in there.

    I hope this makes sense.

    Leave a comment