婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > asp.net使用DataGridTree實(shí)現(xiàn)下拉樹的方法

asp.net使用DataGridTree實(shí)現(xiàn)下拉樹的方法

熱門標(biāo)簽:電銷語音機(jī)器人型號參數(shù) 百度地圖怎樣做地圖標(biāo)注 征途美甲店地圖標(biāo)注 騰訊地圖標(biāo)注手機(jī) 太原400電話上門辦理 400電話如何申請取消 浦發(fā)電話機(jī)器人提醒還款 昆明語音電銷機(jī)器人價(jià)格 柳州電銷機(jī)器人公司

本文實(shí)例講述了asp.net使用DataGridTree實(shí)現(xiàn)下拉樹的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

下拉樹實(shí)現(xiàn)原理:輸出json到客戶端,客戶端實(shí)現(xiàn)動態(tài)加載,中間不會和服務(wù)端交互。數(shù)據(jù)量支持上經(jīng)測試幾千還是很快的。本下拉樹控件是用c#+js樹實(shí)現(xiàn)。

2.c# 計(jì)算器 計(jì)算字符串?dāng)?shù)學(xué)表達(dá)式源碼

計(jì)算數(shù)學(xué)表達(dá)式原理 采用c#實(shí)現(xiàn) 很實(shí)用
//a.建立兩個(gè)棧:第一個(gè)位操作數(shù)棧,第二個(gè)操作符符棧!(將棧定義為string類型)
//b.對數(shù)字來說是無條件壓入數(shù)字棧中.
//c.而對符號來說,只有當(dāng)前棧頂元素的優(yōu)先值小于掃到的符號時(shí)(比如”+”小于”*”),此符號才壓入棧;否則大于等于的情況是將當(dāng)前棧頂元素彈出棧,與當(dāng)前數(shù)字棧的前兩個(gè)數(shù)字組成式子進(jìn)行計(jì)算.計(jì)算結(jié)果當(dāng)作數(shù)字壓入數(shù)字棧作為棧頂元素(要舍棄已經(jīng)彈出的兩個(gè)數(shù)字),而那個(gè)掃描到的符號則將代替那個(gè)彈出的符號作為棧頂元素)。
//d.最后說一下括號,原則是掃描到左括號時(shí)無條件壓入符號棧,而掃到右括號時(shí),則彈出離棧頂最近的一個(gè)左括號以上的全部符號與數(shù)字棧的數(shù)字做運(yùn)算

3.asp.net教程 datagridtree表格樹控件 

繼承asp.net的datagrid控件實(shí)現(xiàn)的表格樹控件
/*表格樹控件說明
* 此控件繼承datagrid 新增屬性說明:
* 1.treeparentcode:頂級根節(jié)點(diǎn)parentcode
* 2.treedisplaydeep:展現(xiàn)表格樹深度默認(rèn)為1
* 3.sumcolumns:自動匯總到根節(jié)點(diǎn)的字段集合 針對 decimal類型
* 4.新增樹狀列模板templatetreecolumn 此模板繼承了templatecolumn 重寫了方法initializecell
* 客戶端新增特性配置說明
* 1.固定列 配置 itemstyle-css教程class='tdlockedclass'
* 2.固定表頭 配置 headerstyle-cssclass='trlockedclass'
* 3.文本框 input 或 asp:textbox 配置事件onchange='sumparent(this);' 數(shù)字改變相應(yīng)所有父節(jié)點(diǎn)也隨著改變 針對數(shù)字型 其他不支持
* 不過可以自定義js
* 報(bào)表說明:
* 1.datagridtree.enableviewstate=false;提高加載速度
* 2.動態(tài)定義列 實(shí)現(xiàn) boundcolumn column = new boundcolumn();
column.headertext = "動態(tài)列";
column.datafield = "unitname";
datagridnew.columns.add(column);
* 也可以自定義默認(rèn)模板 動態(tài)加載模板 定義模板例子templatetreecolumn,不用繼承templatecolumn,實(shí)現(xiàn)接口 itemplate initializecell 方法就可以了
* 不足之處:1.對于復(fù)雜多行表頭 不知 如何實(shí)現(xiàn)
* 2.表頭和列固定 數(shù)據(jù)量大時(shí) 會影響反映速度 一千左右的數(shù)據(jù)量 還時(shí)沒問題的 數(shù)據(jù)量在大的話 課考慮采用ajax動態(tài)加載 目前此功能還沒實(shí)現(xiàn)
實(shí)例代碼

復(fù)制代碼 代碼如下:
private void maketree(datatable dtnodesets, string strparentcolumn, string strrootvalue, string strindexcolumn, string strtextcolumn, dropdownlist drpbind, int i)
{
//每向下一層,多一個(gè)縮入單位  
i++;
dataview dvnodesets = new dataview(dtnodesets);
dvnodesets.rowfilter = strparentcolumn + "=" + strrootvalue;
string strpading = ""; //縮入字符 
//通過i來控制縮入字符的長度,我這里設(shè)定的是一個(gè)全角的空格  
for (int j = 0; j i; j++)
strpading += " ";//如果要增加縮入的長度,改成兩個(gè)全角的空格就可以了 
foreach (datarowview drv in dvnodesets)
{
treenode tnnode = new treenode();
listitem li = new listitem(strpading + "├" + drv[strtextcolumn].tostring(), drv[strindexcolumn].tostring());
drpbind.items.add(li);
maketree(dtnodesets, strparentcolumn, drv[strindexcolumn].tostring(), strindexcolumn, strtextcolumn, drpbind, i);
}
//遞歸結(jié)束,要回到上一層,所以縮入量減少一個(gè)單位  
i--;
}
/// summary>  
/// sql語句查詢,再綁定到droplist里面  
/// /summary>  
private void createtree()
{
//查詢zonelist  
string sql = "select * from master_department where parent_department='003'";
dataset ds = db.getds();
datatable dt = ds.tables[0];
maketree(dt, "parent_department", "003", "department_code", "department_name", dropdownlist1, -1);
}

網(wǎng)上找的另一個(gè)比較好的實(shí)例
復(fù)制代碼 代碼如下:
using system;
using system.collections.generic;
using system.text;
using system.web.ui.webcontrols;
namespace interface.common
{
    public interface idropdowntree : idisposable
    {
        /**//// summary>
        /// 返回dictionary里分別對應(yīng)id,文本,如果沒有子節(jié)點(diǎn)返回null
        /// /summary>
        /// param name="parentid">父節(jié)點(diǎn)id/param>
        /// returns>/returns>
        dictionarystring, 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">是否是同級節(jié)點(diǎn)中的最后一個(gè)/param>
        /// param name="haschild">本節(jié)點(diǎn)是否擁有子節(jié)點(diǎn)/param>
        /// param name="parentstring">父節(jié)點(diǎn)前綴符號/param>
        /// returns>本節(jié)點(diǎn)的前綴/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">傳進(jìn)一個(gè)被綁定的dropdownlist/param>
        /// param name="removeid">被排除綁定的節(jié)點(diǎn)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;//根節(jié)點(diǎn)/父id
                string currentsign = string.empty;//當(dāng)前節(jié)點(diǎn)符號;
                string parrentsign = string.empty; //父節(jié)點(diǎn)符號;
                bool haschild = true;//是否有子
                queuestring> parentkeylist = new queuestring>();//存 有子節(jié)點(diǎn)的 節(jié)點(diǎn)id
                queuestring> parentsignlist = new queuestring>();//對應(yīng)節(jié)點(diǎn)id的前綴符號
                int itemindexof = 0;//父節(jié)點(diǎn)所在的位置 
                while (haschild)
                {
                    int lastonecount = 1;//用于計(jì)算在同級別中是否最后一個(gè)
                    dictionarystring, string> childlist = _dropdowntree.getchildcategory(currentid);// 得到子節(jié)點(diǎn)列表
                    if (childlist != null childlist.count > 0)
                    {
                        if (!string.isnullorempty(removeid) childlist.containskey(removeid))
                        {
                            childlist.remove(removeid);
                        }
                        foreach (keyvaluepairstring, 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);//當(dāng)前的節(jié)點(diǎn)id
                                parentsignlist.enqueue(currentsign);//當(dāng)前的節(jié)點(diǎn)符號
                            }
                            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);//添加子節(jié)點(diǎn)
                            lastonecount++;
                        }
                        if (parentkeylist.count > 0)//存在子節(jié)點(diǎn)時(shí)
                        {
                            currentid = parentkeylist.dequeue();
                            parrentsign = parentsignlist.dequeue();
                        }
                        else
                        {
                            haschild = false;
                        }
                    }
                    else
                    {
                        break;
                    }
                }
                if (autodispose)
                {
                    _dropdowntree.dispose();
                }
            }
        }
        /**//// summary>
        /// 綁定連動級的下拉菜單
        /// /summary>
        /// param name="ddlgoodstype">傳進(jìn)一個(gè)被綁定的dropdownlist/param>
        public void bindtodropdownlist(dropdownlist ddlgoodstype)
        {
            bindtodropdownlist(ddlgoodstype, string.empty,null, true);
        }
        /**//// summary>
        /// 綁定連動級的下拉菜單
        /// /summary>
        /// param name="ddlgoodstype">傳進(jìn)一個(gè)被綁定的dropdownlist/param>
        /// param name="removeid">被排除的id/param>
        public void bindtodropdownlist(dropdownlist ddlgoodstype, string removeid)
        {
            bindtodropdownlist(ddlgoodstype, removeid,null, true);
        }
        /**//// summary>
        /// 綁定連動級的下拉菜單
        /// /summary>
        /// param name="ddlgoodstype">傳進(jìn)一個(gè)被綁定的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
    }
}

調(diào)用方法很簡單:
1.繼承自idropdowntree接口
2.實(shí)現(xiàn)3個(gè)接口方法實(shí)現(xiàn)接口代碼示例[dispose方法自己實(shí)現(xiàn)],最主要的是自己實(shí)現(xiàn)獲得子級的方法
復(fù)制代碼 代碼如下:
idropdowntree 成員
#region idropdowntree 成員
public dictionarystring, string> getchildcategory(string parentid)
{
    string where = "parentid='" + parentid + "'";
    if (string.isnullorempty(parentid))
    {
 where = "parentid is null or parentid='" + guid.empty + "'";
    }
    listgoodscategorybean> _goodscategorylist = selectlist(0, where, string.empty, false);
    if (_goodscategorylist != null _goodscategorylist.count > 0)
    {
 dictionarystring, string> categorylist = new dictionarystring, string>();
 for (int i = 0; i _goodscategorylist.count; i++)
 {
     categorylist.add(_goodscategorylist[i].id.tostring(), _goodscategorylist[i].gategoryname);
 }
 return categorylist;
    }//51aspx.com
    return null;
}
public interface.common.dropdowntree dropdowntree
{
    get { return new interface.common.dropdowntree(this); }
}
#endregion

頁面調(diào)用代碼: 類名.dropdowntree.bindtodropdownlist(下拉控件id);

希望本文所述對大家的asp.net程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • 適用與firefox ASP.NET無刷新二級聯(lián)動下拉列表
  • ASP.NET 2.0寫無限級下拉菜單
  • asp.net DropDownList 三級聯(lián)動下拉菜單實(shí)現(xiàn)代碼
  • asp.net 下拉列表無級數(shù)據(jù)綁定實(shí)現(xiàn)代碼
  • asp.net 實(shí)現(xiàn)下拉框只讀功能
  • ASP.NET C#生成下拉列表樹實(shí)現(xiàn)代碼
  • asp.net中js+jquery添加下拉框值和后臺獲取示例
  • asp.net mvc下拉框Html.DropDownList 和DropDownListFor的常用方法
  • Asp.net下拉樹的實(shí)現(xiàn)過程
  • ASP.NET多彩下拉框開發(fā)實(shí)例
  • ASP.NET實(shí)現(xiàn)級聯(lián)下拉框效果實(shí)例講解

標(biāo)簽:天門 蘭州 白山 德陽 江蘇 張家界 陽泉 新疆

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net使用DataGridTree實(shí)現(xiàn)下拉樹的方法》,本文關(guān)鍵詞  asp.net,使用,DataGridTree,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《asp.net使用DataGridTree實(shí)現(xiàn)下拉樹的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于asp.net使用DataGridTree實(shí)現(xiàn)下拉樹的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩区在线观看| 亚洲精选一二三| 亚洲一区二区3| 精品免费一区二区三区| 91国在线观看| 韩国视频一区二区| 一区二区三区在线观看网站| 日韩欧美成人午夜| 91丨九色porny丨蝌蚪| 国内外成人在线| 午夜国产精品一区| 国产欧美一区二区三区在线看蜜臀| 欧美三级韩国三级日本一级| 99久久免费国产| 成人看片黄a免费看在线| 久久不见久久见中文字幕免费| 亚洲国产成人av网| 亚洲精品水蜜桃| 亚洲乱码国产乱码精品精可以看| 国产欧美日韩另类一区| 精品国产网站在线观看| 3d动漫精品啪啪一区二区竹菊| 成人一级片在线观看| 国产精品激情偷乱一区二区∴| 欧美午夜影院一区| 99精品欧美一区二区三区小说| 成人高清视频在线| 99久久精品免费看| 国产一区二区三区国产| 美女视频网站久久| 久久99国产精品免费网站| 伦理电影国产精品| 美女视频黄频大全不卡视频在线播放| 亚洲成人动漫一区| 亚洲国产成人高清精品| 偷拍日韩校园综合在线| 午夜欧美大尺度福利影院在线看| 一区二区不卡在线播放| 亚洲一区免费观看| 性做久久久久久免费观看| 日韩高清欧美激情| 7777精品伊人久久久大香线蕉完整版 | 免费在线观看视频一区| 亚洲高清三级视频| 亚洲r级在线视频| 午夜电影网亚洲视频| 国产一区二区影院| 波多野结衣欧美| 欧美午夜电影网| 日韩一区国产二区欧美三区| 亚洲图片你懂的| 99免费精品视频| a4yy欧美一区二区三区| 色婷婷久久99综合精品jk白丝| 一本一道久久a久久精品| 欧美日韩国产乱码电影| 日韩视频一区在线观看| 久久久www免费人成精品| 久久久精品黄色| 亚洲一二三四在线| 日本网站在线观看一区二区三区| 亚洲国产成人av网| 激情综合一区二区三区| 成人网页在线观看| 97精品久久久午夜一区二区三区 | 91精品91久久久中77777| 51午夜精品国产| 国产精品二区一区二区aⅴ污介绍| 亚洲天堂a在线| 亚洲大片精品永久免费| 久久国产成人午夜av影院| 粉嫩绯色av一区二区在线观看| 成人污视频在线观看| 欧美日韩午夜影院| 国产清纯白嫩初高生在线观看91| 性欧美大战久久久久久久久| 国内精品国产三级国产a久久| 在线一区二区三区四区五区| www欧美成人18+| 一二三区精品视频| 国产一区在线不卡| 欧美性生交片4| 国产精品白丝在线| 精品一区二区免费在线观看| 欧美日韩在线不卡| 久久亚洲一区二区三区四区| 亚洲一区二区三区三| 高清av一区二区| 久久午夜国产精品| 亚洲成人综合网站| 国产成人精品免费网站| 欧美精品久久天天躁| 一区二区三区欧美日韩| 99久久久精品| 久久久久久久久久美女| 丝袜美腿亚洲一区二区图片| 欧美日韩国产不卡| 亚洲黄色免费网站| 91福利小视频| 亚洲最大成人网4388xx| voyeur盗摄精品| 日韩理论片在线| 欧美日韩久久久久久| 亚洲特黄一级片| 欧美中文字幕亚洲一区二区va在线| 亚洲精品欧美激情| 在线观看日韩毛片| 日韩和欧美一区二区| 4hu四虎永久在线影院成人| 天天影视网天天综合色在线播放| 欧美三级日本三级少妇99| 亚洲高清视频的网址| 精品免费国产二区三区| 久久99久久精品| 精品国产凹凸成av人导航| 丁香另类激情小说| 婷婷夜色潮精品综合在线| 欧美日韩久久不卡| 天堂资源在线中文精品| 欧美一级理论性理论a| 日韩电影在线免费观看| 欧美精品一区二区在线观看| 国产永久精品大片wwwapp| 国产精品久久久久影院老司| 成人免费高清在线| 亚洲免费色视频| 91在线小视频| 丝瓜av网站精品一区二区 | jlzzjlzz亚洲日本少妇| 日韩不卡一区二区三区 | 色婷婷综合激情| 最新日韩在线视频| 在线观看视频欧美| 久久伊人中文字幕| 欧美三区免费完整视频在线观看| 欧美一级欧美三级| 91免费看片在线观看| 欧美一区二区性放荡片| 国产精品自在在线| 精品系列免费在线观看| 中文字幕精品—区二区四季| 欧美日韩www| 国产人伦精品一区二区| 欧美中文一区二区三区| 国产亚洲欧美日韩日本| 欧美性色aⅴ视频一区日韩精品| 日韩美女在线视频| 成人深夜在线观看| 欧美日韩一区不卡| 麻豆91免费看| 99国产精品久| 水蜜桃久久夜色精品一区的特点| 久久婷婷综合激情| 国产一级精品在线| 亚洲成人福利片| 欧美日韩电影在线播放| 粉嫩高潮美女一区二区三区 | 精品国产sm最大网站免费看| 色婷婷综合中文久久一本| 欧美一二三区精品| 一本色道综合亚洲| 欧美乱妇23p| 99re6这里只有精品视频在线观看| 韩国午夜理伦三级不卡影院| 精品国产乱子伦一区| 日韩一区二区三区四区| 免费高清在线一区| 亚洲亚洲人成综合网络| 在线一区二区视频| 99国产精品国产精品久久| 亚洲欧美另类图片小说| 亚洲欧洲国产专区| 中国色在线观看另类| 99精品视频中文字幕| 成人av网站在线观看免费| 国产精品妹子av| 国产精品美女久久久久久久久| 成人免费高清视频| 成人av片在线观看| 欧美日韩国产综合一区二区三区| 在线欧美一区二区| 99久久国产综合精品女不卡| 中文字幕一区二区三区四区| 国产精品免费网站在线观看| 91久久国产综合久久| 色拍拍在线精品视频8848| 亚洲综合一二区| 亚洲视频一区二区免费在线观看| 亚洲一区二区3| 亚洲国产日产av| 亚洲资源中文字幕| 91精品国产综合久久久久| 精品久久久久香蕉网| 国产一区二区美女诱惑| 捆绑变态av一区二区三区 | 日本一区二区免费在线观看视频| av电影天堂一区二区在线观看| 91成人免费在线视频| 蜜桃视频一区二区| 成人激情动漫在线观看|