asp.net(C#)无限栏目分级程序代码分享(3) 核心代码之显示列表
核心代码之显示列表
显示列表的时候的repeater的itemcreated事件#region 显示列表的时候的repeater的itemcreated事件
public static void itemcreated(Object Sender, System.Web.UI.WebControls.RepeaterItemEventArgs e,string ctlname,string ctlname2)
{
DataRowView dv=(DataRowView)e.Item.DataItem;
int iDepth=(int)dv["Depth"];
int NextID=(int)dv["NextID"];
int Child=(int)dv["Child"];
try
{
ShowLine[iDepth]=(int)dv["NextID"]>0?true:false;//这个值是经常被修改的.
}
catch(Exception ex)
{
ShowLine.Add(false);
ShowLine[iDepth]=(int)dv["NextID"]>0?true:false;//这个值是经常被修改的.
}
System.Web.UI.WebControls.Literal l=new System.Web.UI.WebControls.Literal();
l=(System.Web.UI.WebControls.Literal)e.Item.FindControl(ctlname);
string text="";
string text2="";
if (iDepth>0)
{
for(int i=1;i<=iDepth;i++)
{
if (i==iDepth)
{
if (NextID>0)
text +="<img src=''images/tree_line1.gif'' width=''17'' height=''16'' valign=''abvmiddle''>";
else
text +="<img src=''images/tree_line2.gif'' width=''17'' height=''16'' valign=''abvmiddle''>";
}
else//这个判断主要是看iDepth以前的要显示|,还是显示空填充
{
if ((bool)ShowLine[i])
text +="<img src=''images/tree_line3.gif'' width=''17'' height=''16'' valign=''abvmiddle''>";
else
text +="<img src=''images/tree_line4.gif'' width=''17'' height=''16'' valign=''abvmiddle''>";
}
}
}
if (Child>0)
{
text2="(" + Child + ")" ;//()里的数字,表示子栏目数目
text +="<img src=''Images/tree_folder4.gif'' width=''15'' height=''15'' valign=''abvmiddle''>";
}
else
text +="<img src=''Images/tree_folder3.gif'' width=''15'' height=''15'' valign=''abvmiddle''>";
l.Text=text;
System.Web.UI.WebControls.Literal l2=(System.Web.UI.WebControls.Literal)e.Item.FindControl(ctlname2);
l2.Text=text2;
}
#endregion
得到select表单的列表项目#region 得到select表单的列表项目
public static string getOptions(string table,int type,int selected)
{
System.Text.StringBuilder sb=new System.Text.StringBuilder();
DataTable dt=new DataTable();
action a=new action();
dt=a.list(table);//得到列表
a.close();
if(dt.Rows.Count==0)
return "<option value=''''>请先添加类别</option>\n";
if (type==0)//显示"无(作为一级类别"
sb.Append("<option value=''0''>无(作为一级类别)</option>\n");
foreach(DataRow dr in dt.Rows)
{
int tmpDepth=(int)dr["Depth"];
int NextID=(int)dr["NextID"];
int classid=(int)dr["classid"];
int child=(int)dr["child"];
string classname=(string)dr["classname"];
try
{
ShowLine[tmpDepth]=NextID>0?true:false;//这个值是经常被修改的.
}
catch(Exception ex)
{
ShowLine.Add(false);
ShowLine[tmpDepth]=NextID>0?true:false;//这个值是经常被修改的.
}
//sb.AppendFormat("<option value=''{0}''>{1}</option>\n",classid,classname);
//默认选择的项
if (classid==selected)
sb.AppendFormat("<option value=''{0}'' selected>",classid);
else
{
if(type==2 && child>0)//添加文章的时候,有子栏目的栏目的value这里也设置为0
sb.AppendFormat("<option value=''{0}''>","0");
else
sb.AppendFormat("<option value=''{0}''>",classid);
}
if (tmpDepth>0)
{
for(int j=1;j<=tmpDepth;j++)
{
sb.Append(" ");
if (j==tmpDepth)
{
if(NextID>0)
sb.Append("├ ");
else
sb.Append("└ ");
}
else
{
if((bool)ShowLine[j])
sb.Append("│");
else
sb.Append(" ");
}
}
}
sb.Append(classname);
sb.Append("</option>\n");
}
return sb.ToString();
}
#endregion
public static void itemcreated(Object Sender, System.Web.UI.WebControls.RepeaterItemEventArgs e,string ctlname,string ctlname2)
{
DataRowView dv=(DataRowView)e.Item.DataItem;
int iDepth=(int)dv["Depth"];
int NextID=(int)dv["NextID"];
int Child=(int)dv["Child"];
try
{
ShowLine[iDepth]=(int)dv["NextID"]>0?true:false;//这个值是经常被修改的.
}
catch(Exception ex)
{
ShowLine.Add(false);
ShowLine[iDepth]=(int)dv["NextID"]>0?true:false;//这个值是经常被修改的.
}
System.Web.UI.WebControls.Literal l=new System.Web.UI.WebControls.Literal();
l=(System.Web.UI.WebControls.Literal)e.Item.FindControl(ctlname);
string text="";
string text2="";
if (iDepth>0)
{
for(int i=1;i<=iDepth;i++)
{
if (i==iDepth)
{
if (NextID>0)
text +="<img src=''images/tree_line1.gif'' width=''17'' height=''16'' valign=''abvmiddle''>";
else
text +="<img src=''images/tree_line2.gif'' width=''17'' height=''16'' valign=''abvmiddle''>";
}
else//这个判断主要是看iDepth以前的要显示|,还是显示空填充
{
if ((bool)ShowLine[i])
text +="<img src=''images/tree_line3.gif'' width=''17'' height=''16'' valign=''abvmiddle''>";
else
text +="<img src=''images/tree_line4.gif'' width=''17'' height=''16'' valign=''abvmiddle''>";
}
}
}
if (Child>0)
{
text2="(" + Child + ")" ;//()里的数字,表示子栏目数目
text +="<img src=''Images/tree_folder4.gif'' width=''15'' height=''15'' valign=''abvmiddle''>";
}
else
text +="<img src=''Images/tree_folder3.gif'' width=''15'' height=''15'' valign=''abvmiddle''>";
l.Text=text;
System.Web.UI.WebControls.Literal l2=(System.Web.UI.WebControls.Literal)e.Item.FindControl(ctlname2);
l2.Text=text2;
}
#endregion
得到select表单的列表项目#region 得到select表单的列表项目
public static string getOptions(string table,int type,int selected)
{
System.Text.StringBuilder sb=new System.Text.StringBuilder();
DataTable dt=new DataTable();
action a=new action();
dt=a.list(table);//得到列表
a.close();
if(dt.Rows.Count==0)
return "<option value=''''>请先添加类别</option>\n";
if (type==0)//显示"无(作为一级类别"
sb.Append("<option value=''0''>无(作为一级类别)</option>\n");
foreach(DataRow dr in dt.Rows)
{
int tmpDepth=(int)dr["Depth"];
int NextID=(int)dr["NextID"];
int classid=(int)dr["classid"];
int child=(int)dr["child"];
string classname=(string)dr["classname"];
try
{
ShowLine[tmpDepth]=NextID>0?true:false;//这个值是经常被修改的.
}
catch(Exception ex)
{
ShowLine.Add(false);
ShowLine[tmpDepth]=NextID>0?true:false;//这个值是经常被修改的.
}
//sb.AppendFormat("<option value=''{0}''>{1}</option>\n",classid,classname);
//默认选择的项
if (classid==selected)
sb.AppendFormat("<option value=''{0}'' selected>",classid);
else
{
if(type==2 && child>0)//添加文章的时候,有子栏目的栏目的value这里也设置为0
sb.AppendFormat("<option value=''{0}''>","0");
else
sb.AppendFormat("<option value=''{0}''>",classid);
}
if (tmpDepth>0)
{
for(int j=1;j<=tmpDepth;j++)
{
sb.Append(" ");
if (j==tmpDepth)
{
if(NextID>0)
sb.Append("├ ");
else
sb.Append("└ ");
}
else
{
if((bool)ShowLine[j])
sb.Append("│");
else
sb.Append(" ");
}
}
}
sb.Append(classname);
sb.Append("</option>\n");
}
return sb.ToString();
}
#endregion