欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【asp.net使用DataGridTree实现下拉树的方法】,下面是详细的讲解!
asp.net使用DataGridTree实现下拉树的方法
本文实例讲述了asp.net使用DataGridTree实现下拉树的方法。分享给大家供大家参考。具体实现方法如下:
下拉树实现原理:输出json到客户端,客户端实现动态加载,中间不会和服务端交互。数据量支持上经测试几千还是很快的。本下拉树控件是用c#+js树实现。
2.c# 计算器 计算字符串数学表达式源码
计算数学表达式原理 采用c#实现 很实用
//a.建立两个栈:第一个位操作数栈,第二个操作符符栈!(将栈定义为string类型)
//b.对数字来说是无条件压入数字栈中.
//c.而对符号来说,只有当前栈顶元素的优先值小于扫到的符号时(比如”+”小于”*”),此符号才压入栈;否则大于等于的情况是将当前栈顶元素弹出栈,与当前数字栈的前两个数字组成式子进行计算.计算结果当作数字压入数字栈作为栈顶元素(要舍弃已经弹出的两个数字),而那个扫描到的符号则将代替那个弹出的符号作为栈顶元素)。
//d.最后说一下括号,原则是扫描到左括号时无条件压入符号栈,而扫到右括号时,则弹出离栈顶最近的一个左括号以上的全部符号与数字栈的数字做运算
3.asp.net教程 datagridtree表格树控件
继承asp.net的datagrid控件实现的表格树控件
/// <summary>
/// 返回dictionary里分别对应id,文本,如果没有子节点返回null
/// </summary>
/// <param name="parentid">父节点id</param>
/// <returns></returns>
dictionary<string, string> getchildcategory(string parentid);
/// <summary>
/// 代码里写return new interface.common.dropdowntree(this);
/// </summary>
dropdowntree dropdowntree
{
get;
}
}
public sealed class dropdowntree
{
idropdowntree _dropdowntree;
public dropdowntree(idropdowntree dropdowntree)
{
_dropdowntree=dropdowntree;
}
/// <summary>
/// 用于树的前缀
/// </summary>
/// <param name="islast">是否是同级节点中的最后一个</param>
/// <param name="haschild">本节点是否拥有子节点</param>
/// <param name="parentstring">父节点前缀符号</param>
/// <returns>本节点的前缀</returns>
private string getprefix(bool islast, bool haschild, string parentstring)
{
string result=string.empty;
if (!string.isnullorempty(parentstring))
{
parentstring=parentstring.remove(parentstring.length - 1).replace("├", "│").replace("└", " ");
result +=parentstring;
}
if (islast)
{
result +="└";
}
else
{
result +="├";
}
if (haschild)
{
result +="┬";
}
else
{
result +="─";
}
return result;
}
绑定下拉菜单#region 绑定下拉菜单
/// <summary>
/// 绑定连动级的下拉菜单
/// </summary>
/// <param name="ddlgoodstype">传进一个被绑定的dropdownlist</param>
/// <param name="removeid">被排除绑定的节点id</param>
/// <param name="autodispose">是否自动释放</param>
public void bindtodropdownlist(dropdownlist ddlgoodstype, string removeid,string parentid, bool autodispose)
{
if (ddlgoodstype !=null)
{
listitem listitem=null;
string currentid=parentid;//根节点/父id
string currentsign=string.empty;//当前节点符号;
string parrentsign=string.empty; //父节点符号;
bool haschild=true;//是否有子
queue<string> parentkeylist=new queue<string>();//存 有子节点的 节点id
queue<string> parentsignlist=new queue<string>();//对应节点id的前缀符号
int itemindexof=0;//父节点所在的位置
while (haschild)
{
int lastonecount=1;//用于计算在同级别中是否最后一个
dictionary<string, string> childlist=_dropdowntree.getchildcategory(currentid);// 得到子节点列表
if (childlist !=null && childlist.count > 0)
{
if (!string.isnullorempty(removeid) && childlist.containskey(removeid))
{
childlist.remove(removeid);
}
foreach (keyvaluepair<string, string> entry in childlist)
{
if (_dropdowntree.getchildcategory(entry.key) !=null)//存在子
{
currentsign=getprefix(lastonecount==childlist.count, true, parrentsign);
listitem=new listitem(currentsign + entry.value, entry.key);
parentkeylist.enqueue(entry.key);//当前的节点id
parentsignlist.enqueue(currentsign);//当前的节点符号
}
else//不存在子
{
currentsign=getprefix(lastonecount==childlist.count, false, parrentsign);
listitem=new listitem(currentsign + entry.value, entry.key);
}
if (ddlgoodstype.items.count !=0)
{
itemindexof=string.isnullorempty(currentid) ? itemindexof + 1 : ddlgoodstype.items.indexof(ddlgoodstype.items.findbyvalue(currentid)) + lastonecount;
}
ddlgoodstype.items.insert(itemindexof, listitem);//添加子节点
lastonecount++;
}
if (parentkeylist.count > 0)//存在子节点时
{
currentid=parentkeylist.dequeue();
parrentsign=parentsignlist.dequeue();
}
else
{
haschild=false;
}
}
else
{
break;
}
}
if (autodispose)
{
_dropdowntree.dispose();
}
}
}
/// <summary>
/// 绑定连动级的下拉菜单
/// </summary>
/// <param name="ddlgoodstype">传进一个被绑定的dropdownlist</param>
public void bindtodropdownlist(dropdownlist ddlgoodstype)
{
bindtodropdownlist(ddlgoodstype, string.empty,null, true);
}
/// <summary>
/// 绑定连动级的下拉菜单
/// </summary>
/// <param name="ddlgoodstype">传进一个被绑定的dropdownlist</param>
/// <param name="removeid">被排除的id</param>
public void bindtodropdownlist(dropdownlist ddlgoodstype, string removeid)
{
bindtodropdownlist(ddlgoodstype, removeid,null, true);
}
/// <summary>
/// 绑定连动级的下拉菜单
/// </summary>
/// <param name="ddlgoodstype">传进一个被绑定的dropdownlist</param>
/// <param name="removeid">被排除的id,若没有,传null</param>
/// <param name="parentid">起始父id</param>
public void bindtodropdownlist(dropdownlist ddlgoodstype, string removeid,string parentid)
{
bindtodropdownlist(ddlgoodstype, removeid,parentid, true);
}
#endregion
}
}
关于asp.net使用DataGridTree实现下拉树的方法的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【asp】asp.net ubb使用代码-net-ubb使用
- 【默认图片】图片不存在使用默认图片代替的实例
- 【asp】asp.net 页面转向 Response.Redirect Ser
- 【页面打印】关于ASP.NET页面打印技术的常用方法
- 【MVC5】MVC 5 第一章 创建MVC 5 web应用程序-net
- 【MVC】一个简单MVC5 + EF6示例分享-EF6实例-MVC5
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
