国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

ASP.NET生成樹形顯示的GridView實現思路

來源:懂視網 責編:小采 時間:2020-11-27 22:41:46
文檔

ASP.NET生成樹形顯示的GridView實現思路

ASP.NET生成樹形顯示的GridView實現思路:目的:生成樹形結構的表格數據(EasyUI也有TreeGrid,此處只是提供一個思路),可以擴展單擊展開/收縮節點 圖例: 類代碼: 代碼如下:using System; using System.Data; /// <summary> ///GridViewHelper 的摘要說明 ///
推薦度:
導讀ASP.NET生成樹形顯示的GridView實現思路:目的:生成樹形結構的表格數據(EasyUI也有TreeGrid,此處只是提供一個思路),可以擴展單擊展開/收縮節點 圖例: 類代碼: 代碼如下:using System; using System.Data; /// <summary> ///GridViewHelper 的摘要說明 ///

目的:生成樹形結構的表格數據(EasyUI也有TreeGrid,此處只是提供一個思路),可以擴展單擊展開/收縮節點
圖例:

類代碼:
代碼如下:

using System;
using System.Data;
/// <summary>
///GridViewHelper 的摘要說明
/// </summary>
public class GridViewHelper
{
private string gridline; //連接線
private DataTable dt; //傳入的DataTable
private DataTable dtOut; //
輸出的DataTable
private DataRow row; //用于從DataView取數據并增加到dtOut
public GridViewHelper()
{
//
//TODO: 在此處添加構造函數邏輯
//
}
/// <summary>
/// 生成樹形結構的DataTable
/// </summary>
/// <param name="datatable">原始數據表</param>
/// <param name="parentField">上級節點關鍵字段</param>
/// <param name="parentValue">上級節點值</param>
/// <param name="keyField">本節點關鍵字段</param>
/// <param name="textField">顯示的文本字段</param>
/// <param name="sortString">排序字符串</param>
/// <returns>處理后的DataTable</returns>
public DataTable GetGridViewTreeData(DataTable datatable, string parentField, string parentValue, string keyField, string textField, string sortString)
{
datatable.Columns.Add("level", Type.GetType("System.Int32"));
dt = datatable;
dtOut = datatable.Clone();
resetTextField(parentField, parentValue, keyField, textField, sortString, 0);
return dtOut;
}
/// <summary>
/// 遞歸生成新的節點名稱(帶連接線)
/// </summary>
/// <param name="parentValueField">上級節點關鍵字段</param>
/// <param name="parentValue">上級節點值</param>
/// <param name="keyField">本節點關鍵字段</param>
/// <param name="textField">顯示出來的文本字段</param>
/// <param name="sortString">排序字符串</param>
/// <param name="level">樹深度</param>
/// <returns></returns>
private void resetTextField(string parentValueField, string parentValue, string keyField, string textField, string sortString,int level)
{
DataView dv = new DataView(dt, parentValueField + "='" + parentValue + "'", sortString, DataViewRowState.CurrentRows);
int a = dv.Count;
if (dv.Count == 0)
{
return;
}
for (int i = 0; i < a; i++)
{
gridline = "";
dv.RowFilter = parentValueField + "='" + parentValue + "'";
dv.Sort = sortString;
getTreeLine(parentValueField, dv[i][parentValueField].ToString(), keyField, dv[i][keyField].ToString(), sortString);
dv.RowFilter = parentValueField + "='" + parentValue + "'";
dv.Sort = sortString;
row = dtOut.NewRow();
for (int c = 0; c < dv[i].Row.ItemArray.Length; c++)
{
row[c] = dv[i][c];
}
dtOut.Rows.Add(row);
dtOut.Rows[dtOut.Rows.Count - 1][textField] = gridline + (i == a - 1 ? "┗" : "┣") + dv[i][textField].ToString();
dtOut.Rows[dtOut.Rows.Count - 1]["level"] = level;
resetTextField(parentValueField, dv[i][keyField].ToString(), keyField, textField, sortString,level+1);
}
dv.Dispose();
}
/// <summary>
/// 回溯生成樹的連接線
/// </summary>
/// <param name="parentValueField">上級節點關鍵字段</param>
/// <param name="parentValue">上級節點值</param>
/// <param name="keyField">本節點關鍵字段</param>
/// <param name="nodeKey">本節點值</param>
/// <param name="sortString">排序字符串</param>
/// <returns></returns>
private void getTreeLine(string parentValueField, string parentValue, string keyField, string nodeKey, string sortString)
{
//選擇父層節點
DataView dv = new DataView(dt, keyField + "='" + parentValue + "'", sortString, DataViewRowState.CurrentRows);
if (dv.Count > 0)
{
//選擇父節點同級節點
dv.RowFilter = parentValueField + "='" + dv[0][parentValueField].ToString() + "'";
dv.Sort = sortString;
for (int j = 0; j < dv.Count; j++)
{
if (dv[j][keyField].ToString() == parentValue)
{
if (j == dv.Count - 1)
{
gridline = " " + gridline;
}
else
{
gridline = "┃" + gridline;
}
}
}
getTreeLine(parentValueField, dv[0][parentValueField].ToString(), keyField, dv[0][keyField].ToString(), sortString);
}
dv.Dispose();
}
}

HTML示例代碼:
代碼如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewTree.aspx.cs" Inherits="GridViewTree" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>生成樹形顯示的GridView</title>
<style type="text/css">
body
{
line-height: 16px;
font-size: 14px;
}
td
{
padding: 0 2px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td valign="top">
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</td>
<td>
<asp:GridView ID="GridView1" runat="server" BorderWidth="1px" CellPadding="3" GridLines="Vertical"
AutoGenerateColumns="False" BackColor="White" BorderColor="#E7E7FF" BorderStyle="None">
<AlternatingRowStyle BackColor="#F7F7F7" />
<Columns>
<asp:BoundField DataField="ConText" HeaderText="文本" />
<asp:BoundField DataField="id" HeaderText="ID">
<ItemStyle HorizontalAlign="Right" Width="80px" />
</asp:BoundField>
<asp:BoundField DataField="ParentID" HeaderText="父ID">
<ItemStyle HorizontalAlign="Right" Width="80px" />
</asp:BoundField>
<asp:BoundField DataField="level" HeaderText="Level">
<ItemStyle HorizontalAlign="Right" Width="80px" />
</asp:BoundField>
</Columns>
<FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
<HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
<PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
<RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
<SortedAscendingCellStyle BackColor="#F4F4FD" />
<SortedAscendingHeaderStyle BackColor="#5A4C9D" />
<SortedDescendingCellStyle BackColor="#D8D8F0" />
<SortedDescendingHeaderStyle BackColor="#3E3277" />
</asp:GridView>
</td>
</tr>
</table>
</form>
</body>
</html>

后臺代碼:
代碼如下:

DataTable dt = gvHelper.GetGridViewTreeData(datatable, "ParentID", "1", "ID", "ConText", "ConText asc");
GridView1.DataSource = dt;
GridView1.DataBind();
DropDownList1.Items.Add("");
DropDownList1.AppendDataBoundItems = true;
DropDownList1.DataSource = dt;
DropDownList1.DataTextField = "ConText";
DropDownList1.DataValueField = "ID";
DropDownList1.DataBind();

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

ASP.NET生成樹形顯示的GridView實現思路

ASP.NET生成樹形顯示的GridView實現思路:目的:生成樹形結構的表格數據(EasyUI也有TreeGrid,此處只是提供一個思路),可以擴展單擊展開/收縮節點 圖例: 類代碼: 代碼如下:using System; using System.Data; /// <summary> ///GridViewHelper 的摘要說明 ///
推薦度:
標簽: 顯示 生成 方法
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 夜夜骑首页 | 亚洲三级电影在线观看 | 一区二区不卡久久精品 | 国内精品一区二区三区 | 欧美日韩精品在线 | 国产最新网址 | 99国产精品久久久久久久... | 2021国产成人精品久久 | 在线免费观看国产视频 | 夜夜骑日日操 | 中文字幕va一区二区三区 | 欧美天天 | 亚洲综合日韩在线亚洲欧美专区 | 欧美精品亚洲精品日韩专区va | 亚洲视频一区在线 | 日韩第四页 | 亚洲电影网址 | 欧美日韩亚洲一区二区 | 91精品欧美一区二区三区 | 国产精品免费精品自在线观看 | 国产全黄a一级毛片视频 | 亚洲欧美一 | 久久久久亚洲精品成人网小说 | 久久大陆 | 国产精品久久久久久久久久久久 | 国内精品久久久久影院不卡 | 欧美日韩国产高清视频 | 国产a毛片| 久久99精品一久久久久久 | 久久久久久亚洲精品中文字幕 | 国产在线播放一区二区 | 色综合欧美综合天天综合 | 国产一区三区二区中文在线 | 欧美日本三级 | 国产成人精品一区二三区 | 精品久久久久中文字幕日本 | 欧美日韩精品一区二区三区四区 | 亚洲 欧美 中文 日韩欧美 | 欧美综合图区亚洲综合图区 | 国产不卡在线观看 | 91欧美激情一区二区三区成人 |