Customize Download list widget templates
For widgets that inherit from
SimpleScriptView classes, you change their template by setting the
LayoutTemplatePath property to your own template value. This tutorial demonstrates how to set your own widget template to a widget that does not inherit from
SimpleScriptView classes - the Download list widget.
The Download list widget displays documents and files in different ways according to the type you choose in the designer - List, Table, Table+Detail page, List+Detail page. You can customize the template for each of these types in the following way:
- Open your project in Visual Studio.
- In the context menu of SitefinityWebApp, click Add » New Folder.
- Name the folder CustomControls.
- In the context menu of the folder, click Add » New Item... » Visual C# » Class.
- Name the class CustomDownloadListWidget.
- Make the new class inherit from the original control DownloadListView.
- In the context menu of the folder, click Add » New Item... » Visual C# » Code File.
- Name the file CustomMasterTableView.ascx
Create one more template and name it MasterListView.ascx
These will be the custom templates for the Download list widget when you select Table or List in the designer.
- In the SitefinityResources GitHub repository, find the default templates with the name
MasterListView.ascx used by the original control.
- Copy the original templates' content, paste it into your custom templates, and modify it according to your needs.
NOTE: Because there are required controls, when extending the template, you must add these controls to the new one. For example, such required control is the RadGrid with ID documentsGrid. Otherwise, you will receive A required control was not found in the template for . . . error.
- In the Properties window, make the template an embedded resource, by setting its Build Action to Embedded Resource.
- Open CustomDownloadListWidget.cs and override the LoadView method in the following way:
NOTE: Because the template is created in SitefinityWebApp, the sample above uses a virtual path for the embedded custom template: "~/CustomPrefix/". For more information, see Taking advantage of the Virtual Path Provider.
By default FrontentMasterListViewName is used by the DocumentsDefintions. To load your custom template according to the setting chosen in the designer, check the viewName in the LoadView method, and set the LayoutTemplatePath property accordingly.
- Build the solution.
- To register your widget and make it useable by content editors, see Register a new widget in the backend.
After this procedure, whenever you select a view from the Download list widget designer, the corresponding custom template is loaded.
Also, to make your templates editable from the UI, open Designer » Widget templates and store them as the default Download list templates.