Hiding Libraries Based on User Role - Part II

May 11, 2009 Digital Experience
Using a LoginView control, you could bind a RadGrid to a specific library and place it inside of the LoginView's Logged in template. The code below binds a library called documents to a RadGrid, then hides the content based on a user's role:

 

LoginViewTest.ascx

 

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="LoginViewTest.ascx.cs" Inherits="UserControls_LoginViewTest" %> 
<asp:LoginView ID="LoginView1" runat="server"
    <RoleGroups> 
        <asp:RoleGroup Roles="Administrators"
            <ContentTemplate> 
                <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False"  
            GridLines="None"
            <MasterTableView> 
                <RowIndicatorColumn> 
                    <HeaderStyle Width="20px" /> 
                </RowIndicatorColumn> 
                <ExpandCollapseColumn> 
                    <HeaderStyle Width="20px" /> 
                </ExpandCollapseColumn> 
                <Columns> 
                    <telerik:GridHyperLinkColumn DataNavigateUrlFields="URL"  
                        DataNavigateUrlFormatString="{0}.sflb.ashx?download=true"  
                        DataTextField="Name" HeaderText="Link" UniqueName="column1"
                    </telerik:GridHyperLinkColumn> 
                </Columns> 
            </MasterTableView> 
        </telerik:RadGrid> 
            </ContentTemplate> 
        </asp:RoleGroup> 
    </RoleGroups> 
    <LoggedInTemplate> 
        You are logged in, however, you don't have access to the documents. 
    </LoggedInTemplate> 
    <AnonymousTemplate> 
        The user is not logged into the system. 
    </AnonymousTemplate> 
</asp:LoginView> 

LoginView.ascx.cs

 

using System; 
using Telerik.Web.UI; 
using System.Collections; 
using Telerik.Libraries; 
 
public partial class UserControls_LoginViewTest : System.Web.UI.UserControl 
    protected void Page_Load(object sender, EventArgs e) 
    { 
        RadGrid RadGrid1 = (RadGrid)LoginView1.FindControl("RadGrid1"); 
        if (RadGrid1 != null
        { 
            RadGrid1.NeedDataSource += new GridNeedDataSourceEventHandler(RadGrid1_NeedDataSource); 
        } 
    } 
 
    void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e) 
    { 
        // create new instance of LibraryManager 
        Telerik.Libraries.LibraryManager libraryManager = new Telerik.Libraries.LibraryManager(); 
        // get library by specified Name 
        ILibrary theLibrary = libraryManager.GetLibrary("Downloads"); 
        IList list = theLibrary.GetItems(); 
        RadGrid RadGrid1 = (RadGrid)source; 
        RadGrid1.DataSource = theLibrary.GetItems(); 
    } 

Here is the end result:

 

Logged In:

 

Logged Out:

 

 For more information on the Images and Documents modules, please refer to our Developer Guide.

The Progress Team