Customizing user control "Edit" screen on the backend
I've created a user control (DirectoryListWidget.ascx) for a client that work with the Lists Module to display employee information contained in the "directory" list.
Here's the control...
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="DirectoryListWidget.ascx.cs" Inherits="DirectoryListWidget" %><telerik:RadListView runat="server" ID="RadListView1" ItemPlaceholderID="ListContainer"> <LayoutTemplate> <div class="sfContentBlock"> <asp:PlaceHolder ID="ListContainer" runat="server" /></div> </LayoutTemplate> <ItemTemplate> <p style="margin: 0px 0px 15px 0px"><strong><asp:Literal ID="Literal1" runat="server" Text='<%# Eval("Name") %>' /></strong><br /> <em><%# Eval("Jobtitle") %></em><br /> 2501 N. 14th Ave.<br /> Dodge City, KS 67801<br /> 1-800-367-3222<br /> <%=PrefixLabel %><%# Eval("Phone") %><br /> <a href="mailto:<%# Eval("Email") %>"><%# Eval("Email") %></a></p> </ItemTemplate> <EmptyDataTemplate> No Data </EmptyDataTemplate></telerik:RadListView>using System;using System.Data;using System.Data.SqlClient;using System.Collections;using System.Collections.Specialized;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Telerik.Sitefinity;using Telerik.Sitefinity.GenericContent.Model;using Telerik.Sitefinity.Modules.Events;using Telerik.Sitefinity.Events.Model;using Telerik.Web.UI;using Telerik.Web;using Telerik.Sitefinity.Modules.Pages;using Telerik.Sitefinity.Taxonomies;using Telerik.Sitefinity.Taxonomies.Model;using System.Text.RegularExpressions;public partial class DirectoryListWidget : System.Web.UI.UserControl public string DirectoryName get; set; public string CategoryList get; set; public string DepartmentList get; set; public string PhonePrefix get; set; public string PrefixLabel; protected void Page_Load(object sender, EventArgs e) Hashtable buildings = new Hashtable(), categories = new Hashtable(), departments = new Hashtable(); StockHashTable(ref buildings, "SELECT * FROM sf_list_items_building a INNER JOIN sf_taxa b ON a.val=b.id"); StockHashTable(ref categories, "SELECT * FROM sf_list_items_categories a INNER JOIN sf_taxa b ON a.val=b.id"); StockHashTable(ref departments, "SELECT * FROM sf_list_items_department a INNER JOIN sf_taxa b ON a.val=b.id"); DataTable myDataTable = new DataTable(); DataColumn[] cols = new DataColumn[8]; cols[0] = new DataColumn("Name"); cols[1] = new DataColumn("Jobtitle"); cols[2] = new DataColumn("Email"); cols[3] = new DataColumn("Phone"); cols[4] = new DataColumn("Categories"); cols[5] = new DataColumn("Department"); cols[6] = new DataColumn("Building"); cols[7] = new DataColumn("Room"); myDataTable.Columns.Add(cols[0]); myDataTable.Columns.Add(cols[1]); myDataTable.Columns.Add(cols[2]); myDataTable.Columns.Add(cols[3]); myDataTable.Columns.Add(cols[4]); myDataTable.Columns.Add(cols[5]); myDataTable.Columns.Add(cols[6]); myDataTable.Columns.Add(cols[7]); string ConnString = @"Data Source=(local)\SQLEXPRESS;UID=choose;Password=guTrut56"; SqlConnection conn = new SqlConnection(ConnString); conn.Open(); string sqlWheres = ""; string sqlJoins = ""; if (CategoryList != null && CategoryList != "") sqlWheres += " AND sflic.val = '" + CategoryList + "'"; sqlJoins += " INNER JOIN sf_list_items_categories sflic ON a.content_id=sflic.content_id "; if (DepartmentList != null && DepartmentList != "") sqlWheres += " AND sflid.val = '" + DepartmentList + "'"; sqlJoins += " INNER JOIN sf_list_items_department sflid ON a.content_id=sflid.content_id "; if (PhonePrefix == "" || PhonePrefix == null) PrefixLabel = ""; else PrefixLabel = PhonePrefix; if (DirectoryName != null && DirectoryName != "") sqlWheres += " AND (a.title_ LIKE '%" + DirectoryName + "%')"; if ((DirectoryName != null && DirectoryName != "") || (CategoryList != null && CategoryList != "") || (DepartmentList != null && DepartmentList != "")) string sqlQuery = "SELECT * FROM sf_list_items a INNER JOIN sf_lists b ON a.parent_id=b.content_id " + sqlJoins + " WHERE b.url_name_='directory' AND a.visible='1' " + sqlWheres + " ORDER BY a.last_name, a.first_name"; SqlCommand cmd = new SqlCommand(sqlQuery, conn); SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) myDataTable.LoadDataRow(new object[] rdr["title_"], rdr["job_title"], rdr["email"], rdr["phone"], categories[rdr["content_id"].ToString()], departments[rdr["content_id"].ToString()], buildings[rdr["content_id"].ToString()], rdr["room"] , true); rdr.Close(); conn.Close(); RadListView1.DataSource = myDataTable; public void StockHashTable(ref Hashtable ht, string qryString) string ConnString = @"Data Source=(local)\SQLEXPRESS;UID=choose;Password=guTrut56"; SqlConnection conn = new SqlConnection(ConnString); conn.Open(); SqlCommand cmd = new SqlCommand(qryString, conn); SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) if (ht[rdr["content_id"].ToString()] != null) ht[rdr["content_id"].ToString()] += ", " + rdr["title_"].ToString(); else ht[rdr["content_id"].ToString()] = rdr["title_"].ToString(); rdr.Close(); conn.Close(); Hello Kevin,
I think it would be best if you send us your whole project - the database and project files. I see you have custom taxonomies and some other customizations. Selecting directly from the database tables is not recommended. You should use the methods of TaxonomyManager to retrieve the needed taxonomies.
Best wishes,Lubomir,
In what format do you want the database? I could send it to you as an SQL file. As well, it seems you'd need the tables sf_lists, sf_list_items, sf_list_items_categories, sf_list_items_departments, sf_list_items_buildings, and sf_taxa... How is the best way for me to generate this for you?
Hello Kevin,
You can create a backup of your SQL database and an archive of the configuration files in your ~/App_Data/Sitefinity/Configuration folder. Then you can upload them to a free file sharing service like www.megaupload.com and give me the link.
Best wishes,