请急救treeview中的数据绑定问题!
各位哥哥们好,想请教一个问题:我有个treeview,我想让它显示数据库里的东西,是这样的,我们是用分层开发的,数据库的字段为:ID,PID,Name,其中数据访问层的方法为:protected virtual T[] LoadMore(string strSql)
{
IDataReader dr = null;
T[] rdo = null;
try
{
int count = mdbHelper.ExecuteResultCount(strSql);
if (count < 1)
return null;
rdo = new T[count];
dr = mdbHelper.ExecuteReader(strSql);
LoadToArray(rdo, dr);
return rdo;
}
finally
{
mdbHelper.ReleaseDataReader(dr);
}
}
private T[] LoadMore(string strSql, string strOrderFields, int currPage, int rowsPerPage)
{
strSql = mdbHelper.GetPageSql(strSql, strOrderFields, currPage, rowsPerPage);
return LoadMore(strSql);
}
/// <summary>
/// 检索所有记录
/// </summary>
public T[] LoadAll()
{
return LoadMore(Sql.GetSelectAll());
}
public T[] LoadAll(string strOrderFields, int currPage, int rowsPerPage)
{
return LoadMore(Sql.GetSelectAll(), strOrderFields, currPage, rowsPerPage);
}
public T[] LoadAll(int currPage, int rowsPerPage)
{
return LoadAll("ID", currPage, rowsPerPage);
}
/// <summary>
/// 检索指定条件的所有记录
/// 检索条件字段名(类的数据成员),
/// 字段值通过反射由SQLPlus类获取
/// 使用 = 作为比较符号,如 UserName = 'guest'
/// </summary>
public T[] LoadAll(string strFieldName)
{
return LoadMore(Sql.GetSelect(null, strFieldName));
}
/// <summary>
/// 检索指定条件的所有记录
/// String strFieldNames 检索条件字段名列表(类的数据成员),
/// 字段值通过反射由SQLPlus类获取
/// 使用 = 作为比较符号,如 UserName = 'guest' and IsAmdin = 1
/// 检索到的所有DataObject
/// </summary>
public T[] LoadAll(string [] strFieldNames)
{
return LoadMore( Sql.GetSelect(null, strFieldNames));
}
/// <summary>
/// 按照传入的SQL脚本检索数据
/// String strSQL,传入的SQL脚本
/// 检索到的所有DataObject
/// </summary>
public T[] LoadBySql(string strSql)
{
return LoadMore(strSql);
}
public T[] LoadBySql(string strSql, string strOrderFields, int currPage, int rowsPerPage)
{
return LoadMore(strSql, strOrderFields, currPage, rowsPerPage);
}
public T[] LoadBySql(string strSql, int currPage, int rowsPerPage)
{
return LoadBySql(strSql, "ID", currPage, rowsPerPage);
}
请问:我怎么在treeview中实现数据绑定啊?怎么显示出来啊? --------------------编程问答-------------------- Treeview只能绑定Xml数据源吧 --------------------编程问答-------------------- 谢谢回贴,我知道只能绑定XML和站点地图数据源,但是我这个地方怎么实现啊?请教了!!!!!!!!!! --------------------编程问答-------------------- 貼段我自己的代易做图,希望對你有效
--------------------编程问答-------------------- DataView dvTree = new DataView(ds.Tables["table"]);
//往树里灌数据
public void AddTree(int ParentID, TreeNode pNode)
{
//自己撈好DateSet ds TreeNode tn1 = new TreeNode();
DataView dvTree = new DataView(ds.Tables["table"]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "[PARENTID] = " + ParentID;
foreach (DataRowView Row in dvTree)
{
if (pNode == null)
{ //添加根節點
tn1.Text = Row["ConText"].ToString();
tn1.Value = Row["ID"].ToString();
TreeView1.Nodes.Add(tn1);
tn1.Expanded = true;
AddTree(Int32.Parse(Row["ID"].ToString()), tn1); //再次递归
}
else
{ //添加当前节点的子节点
TreeNode tn2 = new TreeNode();
tn2.Text = Row["ConText"].ToString();
tn2.Value = Row["ID"].ToString();
//pNode.Nodes.Add(tn2);
pNode.ChildNodes.Add(tn2);
tn1.Expanded = true;
AddTree(Int32.Parse(Row["ID"].ToString()), tn2); //再次递归
}
}
}
楼上的哥哥,你这个好像有点问题的,因为是分层写的代码,所以后台不直接写SQL语句,我看了下,你写的好像是递归的方法,我也是这样做的,可就是不知道怎么取数据,因为我的数据在数据访问层,是以数组的形式存在的,请教怎么做啊? --------------------编程问答-------------------- 请教,怎么办啊? --------------------编程问答-------------------- 数据源是数组,直接x.datasource=数组就可以拉.如果是从db.cs返回一个数组,那么就写成x.datasource=db.GetArray()
注:GetArray()返回类型是数组. --------------------编程问答-------------------- 数据源是数组,直接x.datasource=数组就可以拉???????????????????????
哥哥,这样也可以啊?treeview的数据源好像不支持这样的吧?! --------------------编程问答-------------------- 在线等啊,请急救啊!谢谢! --------------------编程问答-------------------- treeview可以不用xml绑定
--------------------编程问答-------------------- 楼上的哥哥们,这是我写的TREEVIEW递归,方法没错啊,但是为什么提示说我的name只能存储一个字符呢,我数据库里的是20个啊,是怎么回事啊,大家看下我的代码,看看有没有错,谢谢!
public partial class LI : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
createTreeView();
}
}
private void createTreeView()
{
const int virtualRootID = 0;//虚拟的根结点为0;
Department[] dep = GetDepartment();
Department depar = new Department();
DataTable dt = new DataTable();
DataColumn dc = new DataColumn("ID",typeof(Int32));
dt.Columns.Add(dc);
dc = new DataColumn("Name", typeof(String));
dt.Columns.Add(dc);
dc = new DataColumn("OrganizationID", typeof(Int32));
dt.Columns.Add(dc);
dc = new DataColumn("LastLayerFlag", typeof(Boolean));
dt.Columns.Add(dc);
dc = new DataColumn("LayerCode", typeof(String));
dt.Columns.Add(dc);
dc = new DataColumn("PID", typeof(Int32));
dt.Columns.Add(dc);
DataRow dr=dt.NewRow();
dr["ID"] = depar.ID;
dr["Name"] = dep[10].Name;
dr["OrganizationID"] =dep[10].OrganizationID;
dr["LastLayerFlag"] = dep[1].LastLayerFlag;
dr["LayerCode"] = dep[10].LayerCode;
dr["PID"] =dep[10].PID;
dt.Rows.Add(dr);
createTreeViewRecursive(TreeView1.Nodes, dt, 0);
}
protected Department[] GetDepartment()
{
return new Department().LoadAll();
}
private void createTreeViewRecursive(TreeNodeCollection nodes, DataTable datasource, int PID)
{
string filter = string.Format("PID={0};PID");
DataRow[] drArr = datasource.Select(filter);
TreeNode node;
foreach (DataRow dr in drArr)
{
node = new TreeNode();
nodes.Add(node);
node.Text = (string)dr["Name"];
createTreeViewRecursive(node.ChildNodes, datasource, (int)dr["ID"]);
datasource.Rows.Remove(dr);
}
}
}
}
--------------------编程问答-------------------- ??????
--------------------编程问答--------------------
没有吧,其他数据也可以绑定
可以从数据库里读数据一个节点一个节点的添加 --------------------编程问答-------------------- 请教怎么添加啊?
补充:.NET技术 , ASP.NET