ddlTree.FieldControl.csusing System;
using System.Data;
using System.Runtime.InteropServices;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
namespace CustomFieldsDemo
{
[CLSCompliant(false)]
[Guid("74e4f4fc-ccb6-4c75-aafd-5fb04153820e")]
public class ddlTreeFieldControl : BaseFieldControl //TextField
{
protected DropDownList ddlTree;
protected override string DefaultTemplateName
{
get
{
//下面的用户控件名,<SharePoint:RenderingTemplate> 控件的ID 需要等于这个值
return "ddlTreeFieldRendering";
}
}
public override object Value
{
get
{
EnsureChildControls();
return ddlTree.SelectedValue;
}
set
{
EnsureChildControls();
ddlTree.SelectedValue = this.ItemFieldValue + "";
}
}
public override void Focus()
{
EnsureChildControls();
ddlTree.Focus();
}
protected override void CreateChildControls()
{
if (Field == null) return;
base.CreateChildControls();
if (ControlMode == SPControlMode.Display) return;
//控件ID :ddlTree
ddlTree = (DropDownList) TemplateContainer.FindControl("ddlTree");
if (ddlTree == null)
throw new ArgumentException("未找到ddlTree控件");
ddlTree.ToolTip = Field.Title + "";
ddlTree.TabIndex = TabIndex;
ddlTree.CssClass = CssClass;
if (!Page.IsPostBack)
BindData();
}
//List Name : Tree
private string sourceTreeList = "Tree";
private void BindData()
{
SPWeb web = SPControl.GetContextWeb(Context);
SPList treeList = web.Lists[sourceTreeList];
SPListItemCollection items = treeList.Items;
ddlTree.Items.Add(new ListItem("设置为一级分类", "0"));
DataTable dt = items.GetDataTable();
if(dt.Rows.Count>0)
{
foreach (DataRow row in dt.Rows)
{
if(row["ParentID"].ToString().Trim()=="0")
{
ddlTree.Items.Add(new ListItem(row["ClassName"] + "", row["ClassID"] + ""));
BindChildData(dt, row["ClassID"] + "", 1);
}
}
}
}
private void BindChildData(DataTable dt, string classID, int spaceLength)
{
DataRow[] rows = dt.Select("ParentID=" + classID, "ClassID");
foreach (DataRow row in rows)
{
ddlTree.Items.Add(new ListItem(SpaceLength(spaceLength) + row["ClassName"] + "", row["ClassID"] + ""));
}
}
private string SpaceLength(int spaceLength)
{
string space = "";
for (int i = 0; i < spaceLength; i++)
{
space += " ";
}
return space + "┗";
}
}
}