好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > asp.net使用DataGridTree實現下拉樹的方法

asp.net使用DataGridTree實現下拉樹的方法

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

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

下拉樹實現原理:輸出json到客戶端,客戶端實現動態加載,中間不會和服務端交互。數據量支持上經測試幾千還是很快的。本下拉樹控件是用c#+js樹實現。

2.c# 計算器 計算字符串數學表達式源碼

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

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

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

復制代碼 代碼如下:
private void maketree(datatable dtnodesets, string strparentcolumn, string strrootvalue, string strindexcolumn, string strtextcolumn, dropdownlist drpbind, int i)
{
//每向下一層,多一個縮入單位  
i++;
dataview dvnodesets = new dataview(dtnodesets);
dvnodesets.rowfilter = strparentcolumn + "=" + strrootvalue;
string strpading = ""; //縮入字符 
//通過i來控制縮入字符的長度,我這里設定的是一個全角的空格  
for (int j = 0; j i; j++)
strpading += " ";//如果要增加縮入的長度,改成兩個全角的空格就可以了 
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);
}
//遞歸結束,要回到上一層,所以縮入量減少一個單位  
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);
}

網上找的另一個比較好的實例
復制代碼 代碼如下:
using system;
using system.collections.generic;
using system.text;
using system.web.ui.webcontrols;
namespace interface.common
{
    public interface idropdowntree : idisposable
    {
        /**//// summary>
        /// 返回dictionary里分別對應id,文本,如果沒有子節點返回null
        /// /summary>
        /// param name="parentid">父節點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">是否是同級節點中的最后一個/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;//是否有子
                queuestring> parentkeylist = new queuestring>();//存 有子節點的 節點id
                queuestring> parentsignlist = new queuestring>();//對應節點id的前綴符號
                int itemindexof = 0;//父節點所在的位置 
                while (haschild)
                {
                    int lastonecount = 1;//用于計算在同級別中是否最后一個
                    dictionarystring, string> childlist = _dropdowntree.getchildcategory(currentid);// 得到子節點列表
                    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);//當前的節點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
    }
}

調用方法很簡單:
1.繼承自idropdowntree接口
2.實現3個接口方法實現接口代碼示例[dispose方法自己實現],最主要的是自己實現獲得子級的方法
復制代碼 代碼如下:
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

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

希望本文所述對大家的asp.net程序設計有所幫助。

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

標簽:天門 蘭州 白山 德陽 江蘇 張家界 陽泉 新疆

巨人網絡通訊聲明:本文標題《asp.net使用DataGridTree實現下拉樹的方法》,本文關鍵詞  asp.net,使用,DataGridTree,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《asp.net使用DataGridTree實現下拉樹的方法》相關的同類信息!
  • 本頁收集關于asp.net使用DataGridTree實現下拉樹的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 国产精品亚洲第一区焦香| 男女后进式猛烈XXOO| 欧美日韩产一区二区三区久久 | 情趣大富翁无码AV| 国产亚洲精品久久久久久精品桃花岛 | 欧美videos极品另类| ?????性欧| 男人狂躁进女人下面视频在线观看| 调教她羞辱调教训练h| 女明星一级毛片| 精品91?海角乱在线观看| 我想舔你下面| 国产91会所洗浴女技师按摩| 妽妽把我添高潮了A片小说| 久久99精品久久久久婷婷| 浮力国产| 日本三级电车上强在线观看| 别揉我胸啊嗯~视频美女| 中日韩A片免费看一区二区三区| 激情影院免费观看| 全是裸男的电影禁片| 国产一级生活片| 好硬好大好深好爽好长| 李丽莎喷水视频无删减版| xnxnxn69日本| 杨幂又大又粗又紧又爽| 国产精品无圣光一区二区| 女人被狂c躁到高潮视频AV小说| 久久久久久久久久久33| 男人操女人的逼的视频| 动漫精品男同gayyaoi漫画| 日本孕妇大胆孕交无码av| 丰满的岳妇被粗大爽ⅩXoo小说| 一男一女操| 啊不要啊| 360水滴真实抓拍系列| 穆桂英裸体DVD在播放| 50岁的女人私密很紧| 正面偷拍女厕36个美女嘘嘘| 搜索黄色大片| 亚洲人色大成年网站在线观看|