怎样把DBF的数据分级装入到TreeView中,请前辈指点!小弟先感谢了!

salecn 2009-12-24 02:53:17
背景:

vs2008+c#
test.dbf结构如下:
镇 村 社 姓名
成就镇 梅花村 一社 张三
成就镇 梅花村 一社 李四
成就镇 梅花村 二社 李四
中山镇 茶树村 一社 王五
中山镇 茶树村 二社 李四
中山镇 茶树村 二社 钱八

问题:

现在想把test.dbf 的数据按 镇-村-社-姓名 这样四级的树型结构装入到 TreeView控件中,这应该怎样写代码吗?请前辈指点!
小弟先感谢了!
...全文
72 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yg14hxj 2009-12-25
  • 打赏
  • 举报
回复
好像有种无限递归的方法。。
yg14hxj 2009-12-25
  • 打赏
  • 举报
回复


Common com = new Common(); //自定义链接类
protected void Page_Load(object sender, EventArgs e)
{



string sql = "select DISTINCT 镇 from test";

SqlDataReader sqldr = com.showreader(sql);

while (sqldr.Read())
{

TreeNode tn = new TreeNode();

tn.Text = sqldr["镇"].ToString();

tn.Value = sqldr["镇"].ToString();



TreeView1.Nodes.Add(tn);

addchildnodes(tn);
}




}
protected void addchildnodes(TreeNode tn)
{

string sql = "select DISTINCT 村 from test where 镇='" + tn.Text + "'";

SqlDataReader sqldr = com.showreader(sql);

while (sqldr.Read())
{

TreeNode tn1 = new TreeNode();

tn1.Text = sqldr["村"].ToString();

tn1.Value = sqldr["村"].ToString();

tn.ChildNodes.Add(tn1);

addchildnodes1(tn1,tn.Text );
}
}
protected void addchildnodes1(TreeNode tn,string ftn)
{

string sql = "select DISTINCT 社 from test where 村='" + tn.Text + "' and 镇='"+ftn+"'";

SqlDataReader sqldr = com.showreader(sql);

while (sqldr.Read())
{

TreeNode tn2 = new TreeNode();

tn2.Text = sqldr["社"].ToString();

tn2.Value = sqldr["社"].ToString();

tn.ChildNodes.Add(tn2);
addchildnodes2(tn2,tn.Text );

}
}
protected void addchildnodes2(TreeNode tn,string ftn)
{

string sql = "select 姓名 from test where 社='" + tn.Text + "' and 村='"+ftn+"'";

SqlDataReader sqldr = com.showreader(sql);

while (sqldr.Read())
{

TreeNode tn2 = new TreeNode();

tn2.Text = sqldr["姓名"].ToString();

tn2.Value = sqldr["姓名"].ToString();

tn.ChildNodes.Add(tn2);


}
}
}


过程很烦锁感觉,有没高手有没更简洁的代码...新手的代码见笑了,不过达到楼主的要求,,呵呵
salecn 2009-12-25
  • 打赏
  • 举报
回复
现在大部分C#连接数据库都会是sql server 。但对一些旧的数据库文件的连接和操作就不太熟了。
今天就有这个问题,要对FOXPRO生成的DBF文件数据库进行操作。
我在CSDN上查了很久,大部分有问题都没很好地回复到这些操作上的问题。
经过我的实验,用ODBC来连接它就可以了。
下面是所用的代码。
都很简单,就是格式上要注意。和用开的查询语句会有很大不同。
protected void Page_Load(object sender, EventArgs e)
{
System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection();
string table = @"D:\aaa\code.dbf";
string connStr=@"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + table + ";Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO";
conn.ConnectionString = connStr;
conn.Open();


OdbcCommand cmd = new OdbcCommand();
cmd.Connection = conn;
string sql = "update " + table + " set other='2',rate=1.014 ";
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();

sql = @"select * from " + table;
OdbcDataAdapter da = new OdbcDataAdapter(sql,conn);
DataTable dt = new DataTable();
da.Fill(dt);
this.GridView1.DataSource = dt.DefaultView;
this.GridView1.DataBind();

}
注意点:1 连接串的格式。2 所对应的表名必须要有路径。

http://www.cnblogs.com/tanjy/archive/2006/11/14/560046.html
http://www.xjcncn.com/school/programme/net/200705/739.html
yg14hxj 2009-12-25
  • 打赏
  • 举报
回复
就是我自己写的一个类,类叫Common 里面写了一些常用操作数据库的方法

然后在窗体或ASPX.cs页面调用这个类,我对CS不是很熟悉。但B/S是这样做的...

我不是前辈。 我也刚学这个不久
salecn 2009-12-25
  • 打赏
  • 举报
回复
4楼的前辈

Common com = new Common(); //自定义链接类

是什么意思啊?
salecn 2009-12-24
  • 打赏
  • 举报
回复
类似如下的 TreeView结构:

成就镇
梅花村
一社
张三
李四
二社 李四
中山镇
茶树村
一社
王五

.
.
.
.
.
MOmo400 2009-12-24
  • 打赏
  • 举报
回复
DataTable dt = new DataTable();
dt.Columns.Add("镇");
dt.Columns.Add("村");
dt.Columns.Add("社");
dt.Columns.Add("姓名");

DataRow row = dt.NewRow();
row["镇"] = "成就镇";
row["村"] = "梅花村";
row["社"] = "一社";
row["姓名"] = "张三 ";

dt.Rows.Add(row);

foreach (DataRow dr in dt.Rows)
{
TreeNode node = new TreeNode();
node.Text = dr["镇"].ToString();


TreeNode node1 = new TreeNode();
node1.Text = row["村"].ToString();


TreeNode node2 = new TreeNode();
node2.Text = row["社"].ToString();

TreeNode node3 = new TreeNode();
node3.Text = row["姓名"].ToString();
node2.Nodes.Add(node3);
node1.Nodes.Add(node2);
node.Nodes.Add(node1);

this.treeView1.Nodes.Add(node);
}

111,123

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧