当前位置: 代码迷 >> Sql Server >> c#中SQL中的判断语句嵌套解决思路
  详细解决方案

c#中SQL中的判断语句嵌套解决思路

热度:110   发布时间:2016-04-24 08:56:11.0
c#中SQL中的判断语句嵌套
我在C#做了一个treeview,用的是递归的方法,代码如下图

private void AddTree(int Pid, TreeNode PNode)
    {
        string sqlStr = "SELECT * FROM Resources";
        DataTable dt = Yc_TestS.BaseClass.YSqlHelper.ExecuteQuery(sqlStr, CommandType.Text);
        if (dt.Rows.Count > 0)
        {
            DataView dv = new DataView(dt);
            //过滤ParentID,得到当前的所有子节点 ParentID为父节点ID
            dv.RowFilter = "[parentID] = " + Pid;
            //循环递归
            foreach (DataRowView Row in dv)
            {
                //声明节点
                TreeNode Node = new TreeNode();
                //绑定超级链接
                //Node.NavigateUrl = String.Format("javascript:show('{0}')", Row["name"].ToString());
                //开始递归
                if (PNode == null)
                {
                    //添加根节点
                    Node.Text = Row["name"].ToString();
                    Node.Value = Row["id"].ToString();
                    TreeView1.Nodes.Add(Node);
                    Node.Expanded = true; //节点状态展开
                    AddTree(Int32.Parse(Row["id"].ToString()), Node);    //再次递归
                }
                else
                {
                    //添加当前节点的子节点
                    Node.Text = Row["name"].ToString();
                    Node.Value = Row["id"].ToString();
                    PNode.ChildNodes.Add(Node);
                    Node.Expanded = true; //节点状态展开
                    AddTree(Int32.Parse(Row["id"].ToString()), Node);     //再次递归
                }
            }
        }

    }
    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {


        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "Data Source=BUAA-TORNADO;Initial Catalog=knowledgebase;Integrated Security=True";
        conn.Open();
        SqlDataAdapter ada = new SqlDataAdapter(" //怎么写SQL语句?", conn);
        DataSet ds = new DataSet();
        ada.Fill(ds);
        GridView1.DataSource = ds;
        GridView1.DataBind();

    }


其中Resources表如下图

里面的数据如下图

最后绑定到treeview中的结果如下图

想实现的功能是,在右侧放一个Griedview,点击相应的节点出来相应的表格
建立的统一存放机床表(Machine表)的属性如下图

统一存放刀具的表属性如下


现在的问题是,由于treeview‘机床’分类下和‘刀具’分类下的属性不同,没办法放在一张表中,所以要在SQL语句中进行判断,
如果treeview的value是4,5,6,7,……到23,则select * from Machine,
如果treeview的value是24,25……30,则select * from Tool,
这里面的SQL语句应该怎么写?或者说我应该从哪里进行判断?
------解决思路----------------------
添加节点的同时把(id,a)的对应关系存放在一个字典里,点击节点的时候不就可以用id取a了。
------解决思路----------------------
首先读取数据时候把id和标识字段都读过来,找个合适方式存放就可以了,
大不了每次点击后,去遍历一次DataView得到标识字段,
  相关解决方案