背景:vs2008+c#
test.dbf结构如下:
镇 村 社 姓名
成就镇 梅花村 一社 张三
成就镇 梅花村 一社 李四
成就镇 梅花村 二社 李四
中山镇 茶树村 一社 王五
中山镇 茶树村 二社 李四
中山镇 茶树村 二社 钱八问题:现在想把test.dbf 的数据按 镇-村-社-姓名 这样四级的树型结构装入到 TreeView控件中,这应该怎样写代码吗?请前辈指点!
小弟先感谢了!
test.dbf结构如下:
镇 村 社 姓名
成就镇 梅花村 一社 张三
成就镇 梅花村 一社 李四
成就镇 梅花村 二社 李四
中山镇 茶树村 一社 王五
中山镇 茶树村 二社 李四
中山镇 茶树村 二社 钱八问题:现在想把test.dbf 的数据按 镇-村-社-姓名 这样四级的树型结构装入到 TreeView控件中,这应该怎样写代码吗?请前辈指点!
小弟先感谢了!
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);
}
梅花村
一社
张三
李四
二社 李四
中山镇
茶树村
一社
王五.
.
.
.
.
今天就有这个问题,要对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
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);
}
}
}
过程很烦锁感觉,有没高手有没更简洁的代码...新手的代码见笑了,不过达到楼主的要求,,呵呵