首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

dxDBTreeView 显示的有关问题

2012-03-02 
dxDBTreeView 显示的问题其中的字段值是:pid父极点字段code子极点字段代号name姓名我没有写代码,只是用ADO

dxDBTreeView 显示的问题
其中的字段值是:
      pid         父极点字段
      code       子极点字段     代号
      name       姓名
     
我没有写代码,只是用ADOQuery来连接其中:
设置的字段为:
                      displayfield:=name
                      keyfield         :=code
                      listfield       :=name
                      parentfield   :=pid
在dxDBTreeView   中显示的结果是:
                      ---名称一
                      -------名称二  
现在我是想把代号(code)和姓名(name)这两个字段的值在dxDBTreeView   的目录中显示出来,请大家帮帮忙
我现在想得到的结果是
        ---00100:名称一
        ------0010001:名称二


[解决办法]
在ADOQuery 的SQL中下功夫 字样相加
[解决办法]
说实话,建议你用treeview自己写代码把你数据库中信息加载上来,那样你可以随便建立你的树
[解决办法]
下面这段代码你先参考一下。
unit MainFrm;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ComCtrls, ImgList, StdCtrls;

type
  PNodedata=^TNodeData; //需要申明
TNodeData = record
id:integer;
nodetype: integer;
end;
TMainForm = class(TForm)
ADOQuery1: TADOQuery;
TreeView1: TTreeView;
ImageList1: TImageList;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainForm: TMainForm;
implementation

uses Linkbank;

{$R *.dfm}
//展开树形
procedure TMainForm.FormShow(Sender: TObject);
var
RootNode, FirstDeptNode,SecondDeptNode,ThreeDeptNode: TTreeNode;
PFirstDeptdata,PSecondDeptdata,ThreeDeptdata:PNodedata;
FirstDeptName,SecondDeptname,ThreeDeptname:string;
ado1,ado2,ado3:Tadoquery;
begin
treeview1.Items.Clear;
RootNode:=treeview1.Items.Add(nil, '我的树形结构 ');
RootNode.ImageIndex := 0;
RootNode.SelectedIndex := 0;
ado1:=Tadoquery.Create(self);
ado1.Connection:=dataform.conn;
ado1.Close;
ado1.SQL.Clear;
ado1.SQL.Add( 'select * from tt '); //表结构为tt1 int,tt2 varchar;
ado1.Open;
ado1.First;
while not ado1.Eof do
begin
PFirstDeptdata := new(PNodedata);
PFirstDeptdata.id := ado1.fieldByName( 'tt1 ').AsInteger;
PFirstDeptdata.nodetype := 0;
FirstDeptName := ado1.FieldByName( 'tt2 ').AsString;
FirstDeptNode := treeview1.Items.AddChildObject(RootNode, FirstDeptName,PFirstDeptdata);//注意展开时需要改成上一级的树的节点。
ado1.Next;
ado2:=Tadoquery.Create(self);
ado2.Connection:=dataform.conn;
ado2.Close;
ado2.SQL.Clear;
ado2.SQL.Add( 'select * from bb where bb1=:bb1 ');//表结构为:yy1 int,yy2 int,yy3 varchar;tt1与yy2关联。


ado2.Parameters.ParamByName( 'bb1 ').Value:=PFirstDeptdata.id ;
ado2.Open;
ado2.First;
while not ado2.Eof do
begin
if ado2.FieldByName( 'bb1 ').AsInteger=PFirstDeptdata.id then
begin
PSecondDeptdata := new(PNodedata);
PSecondDeptdata.id := ado2.fieldByName( 'bb2 ').AsInteger;
PSecondDeptdata.nodetype := 1;
SecondDeptName := ado2.FieldByName( 'bb3 ').AsString;
SecondDeptNode := treeview1.Items.AddChildObject(FirstDeptNode,SecondDeptName, PSecondDeptdata);
ado2.Next;
ado3:=Tadoquery.Create(self);
ado3.Connection:=dataform.conn;
ado3.Close;
ado3.SQL.Clear;
ado3.SQL.Add( 'select * from ss where ss0=:ss0 and ss1=:ss1 ');
ado3.Parameters.ParamByName( 'ss0 ').Value :=PFirstDeptdata.id ;
ado3.Parameters.ParamByName( 'ss1 ').Value :=PSecondDeptdata.id ;
ado3.Open;
ado3.First;
while not ado3.Eof do
begin
if (ado3.FieldByName( 'ss0 ').AsInteger=PFirstDeptdata.id) and (ado3.FieldByName( 'ss1 ').AsInteger=PSecondDeptdata.id) then
begin
ThreeDeptdata:= new(PNodedata) ;
ThreeDeptdata.id:=ado3.fieldByName( 'ss2 ').AsInteger;
ThreeDeptdata.nodetype := 2;
ThreeDeptName := ado3.FieldByName( 'ss3 ').AsString;
ThreeDeptNode := treeview1.Items.AddChildObject(SecondDeptNode,ThreeDeptName, ThreeDeptdata);
ado3.Next;
end;


end;
end ;
end ;
end ;
RootNode.Expanded := true; //设置根目录默认打开
end;
//根据节点查询相应数据。
procedure TMainForm.TreeView1Click(Sender: TObject);
var
cournode:Ttreenode;
begin
cournode:=treeview1.Selected;
case cournode.Level of
2:
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add( 'select * from bb where bb3=:bb3 ');
adoquery1.Parameters.ParamByName( 'bb3 ').Value:=treeview1.Selected.Text;
adoquery1.Open;
end;

end;

end;

end.

热点排行