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

在网上找了一个TREEVIEW读取数据库源码,但是ID是INT类型,小弟我的数据库ID是字符型,如何改高分

2013-07-04 
在网上找了一个TREEVIEW读取数据库源码,但是ID是INT类型,我的数据库ID是字符型,怎么改高分?using Systemu

在网上找了一个TREEVIEW读取数据库源码,但是ID是INT类型,我的数据库ID是字符型,怎么改高分?



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace JMOA
{
    public partial class dmclass : Form
    {

        SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=12345;database=JMOA");
        SqlDataAdapter dtd;
        DataSet ds;
        DataView dv;//表示用于排序、筛选、搜索、编辑和导航的System.Data.DataTable+的可绑定数据的自定义视图 
   


        public dmclass()
        {
            InitializeComponent();
        }



        private void GetData(int pid, TreeNode pnode)
        {
            dv = ds.Tables[0].DefaultView;//获取可能包括筛选视图或游标位置的表的自定义视图 
            dv.RowFilter = "pid=" + pid;
            int dvC = dv.Count;
            if (pnode == null)
            {
                int i = 0;
                while (i < dvC)
                {
                    dv = ds.Tables[0].DefaultView;
                    dv.RowFilter = "pid=" + pid;

                    TreeNode node = new TreeNode();
                    node.Text = dv[i]["name"].ToString();


                    node.Tag = int.Parse(dv[i]["id"].ToString());

                    this.treeView1.Nodes.Add(node);

                    GetData((int)node.Tag, node);
                    i++;
                }
            }
            else
            {
                int i = 0;
                while (i < dvC)
                {
                    dv = ds.Tables[0].DefaultView;
                    dv.RowFilter = "pid=" + pid;

                    TreeNode node = new TreeNode();
                    node.Text = dv[i]["name"].ToString();
                    node.Tag = int.Parse(dv[i]["id"].ToString());

                    pnode.Nodes.Add(node);

                    GetData(int.Parse(dv[i]["id"].ToString()), node);
                    i++;
                }
            }
        } 
        
        


        
        private void dmclass_Load(object sender, EventArgs e)
        {
            dtd = new SqlDataAdapter("select * from [class] order by id", conn);
            ds = new DataSet();
            dtd.Fill(ds, "class");
            GetData(0, null); 
           
            
}

        private void dmclass_FormClosing(object sender, FormClosingEventArgs e)
        {
            fmain.f1 = null;
        }

    }  
}





数据库类型是这样的


id       pid        name
A         0         自制品
B         0         代工品
Y         0         外购材料
F         0         辅助材料
D         0         低值易耗品
G         0         固定资产
01        A         挖斗
02        A         铲斗
01        B         挖斗
02        B         铲斗
01        Y         钢板
02        Y         扁钢/方钢
01        D         劳保用品


02        D         五金件
01        G         房屋、建筑物
02        G         机器设备
01        F         气体
02        F         焊材

也就是说我的ID和PID都会有字符和数字出现,怎么改呢,大侠帮忙了~~~100份速求
[解决办法]

//注意事项 
            //1.RowFilter查询,如果是字符串许加单引号
            //2. node.Tag = dv[i]["id"].ToString();
            /// <summary>
            /// 绑定TreeView
            /// </summary>
            /// <param name="pid">父节点ID</param>
            /// <param name="pnode">当前父节点</param>
            private void GetData(string pid, TreeNode pnode)
            {
                dv = ds.Tables[0].DefaultView;//获取可能包括筛选视图或游标位置的表的自定义视图 
                dv.RowFilter = "pid='" + pid+"'";//根据父节点设定筛选条件
                int dvC = dv.Count;//查询总数
                if (pnode == null)//默认为空时
                {
                    int i = 0;


                    while (i < dvC)
                    {
                        dv = ds.Tables[0].DefaultView;
                        dv.RowFilter = "pid='" + pid+"'";

                        TreeNode node = new TreeNode();
                        node.Text = dv[i]["name"].ToString();//节点显示值绑定
                        node.Tag = dv[i]["id"].ToString();//设定标识属性值

                        this.treeView1.Nodes.Add(node);//添加节点

                        GetData(node.Tag.ToString(), node);//递归子节点
                        i++;
                    }
                }
                else
                {
                    int i = 0;
                    while (i < dvC)
                    {
                        dv = ds.Tables[0].DefaultView;
                        dv.RowFilter = "pid='" + pid+"'";



                        TreeNode node = new TreeNode();
                        node.Text = dv[i]["name"].ToString();
                        node.Tag = dv[i]["id"].ToString();

                        pnode.Nodes.Add(node);

                        GetData(dv[i]["id"].ToString(), node);
                        i++;
                    }
                }
            } 


[解决办法]
        SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=12345;database=JMOA");
        SqlDataAdapter dtd;
        DataSet ds;
        //链接数据库的语句,还有定义填充对象;
 private void dmclass_Load(object sender, EventArgs e)
        {
            dtd = new SqlDataAdapter("select * from [class] order by id", conn);
            ds = new DataSet();
            dtd.Fill(ds, "class");
            GetData(0, null); 
            
             
}//加载的时候链接数据库,填充数据
private void dmclass_FormClosing(object sender, FormClosingEventArgs e)
        {
            fmain.f1 = null;
        }


 这个是窗体关闭事件 把fmain里面的fl属性变为空,当然没有看到你的全部代码,你自己看看!
 private void GetData(int pid, TreeNode pnode)
        {
            dv = ds.Tables[0].DefaultView;//获取可能包括筛选视图或游标位置的表的自定义视图 
            dv.RowFilter = "pid=" + pid;后缀为pid后缀;
            int dvC = dv.Count;统计个数
            if (pnode == null)
            {
                int i = 0;
                while (i < dvC)
                {
                    dv = ds.Tables[0].DefaultView;
                    dv.RowFilter = "pid=" + pid;
 
                    TreeNode node = new TreeNode();
                    node.Text = dv[i]["name"].ToString();
                    node.Tag = int.Parse(dv[i]["id"].ToString());
 
                    this.treeView1.Nodes.Add(node);
 
                    GetData((int)node.Tag, node);
                    i++;
                }
            }
绑定treeview的数据;贴出来的代码实在太少了,能分析的有限!
            else
            {
                int i = 0;
                while (i < dvC)


                {
                    dv = ds.Tables[0].DefaultView;
                    dv.RowFilter = "pid=" + pid;
 
                    TreeNode node = new TreeNode();
                    node.Text = dv[i]["name"].ToString();
                    node.Tag = int.Parse(dv[i]["id"].ToString());
 
                    pnode.Nodes.Add(node);
 
                    GetData(int.Parse(dv[i]["id"].ToString()), node);
                    i++;
                }
            }

热点排行