各位高手: 
              我要做一个DropDownList的多表查询,现在我已经把顺着的查询做完了。也就是在添加时用的。
现在想在修改时,把被修改项的类别用DropDownList的形式展现出来。
          我这有个问题:
                        我有6张表,父类表只有自己的ID(这个为一层),下一级有上一级父类的ID(二层),再下一级有二层的ID,以此类推。每张表只有上一层的ID。                          这个怎么能查询出来呢?                          给点示例吧。谢谢了。

解决方案 »

  1.   

    你这个数据结构的设计不好,用一张表可以实现
    ID
    ParentID
    ParentCode
    ........
    你可以规律设计ParentCode,这样取值就方便多了
      

  2.   

    这6个表是洲、国家、省、城市、区、地方。是BOSS设计的我只能按照做。。
    谢谢了帮帮忙吧。
      

  3.   

    如果数据库只记录了地方的ID,那就麻烦多了
    不如6个的ID都记
      

  4.   

    现在我已经把顺着的查询做完了。也就是在添加时用的。
    现在想在修改时,把被修改项的类别用DropDownList的形式展现出来。
    啥意思来着
      

  5.   

    你的 DropDownList 只有一个吗??  还是每一级用一个dropdownlist显示哦?  
      

  6.   

    如果是我上面的那种。直接用<select> 嵌套repeater</select>可以实现!
      

  7.   

    比如当给文章做添加的时候,用DropDownList级联数据,当我选洲的时候,把相对应的国家显示在下一个DropDownList里。
    给文章做修改的时候,DropDownList会级联出在添加时所选的类别内容。
    我现在就是不知道怎么在修改时用DropDownList显示数据
      

  8.   

    你的数据都绑定好了。只要获取到每个表中的父ID,就可以选中前面的选中项了。所以你就通过最后一个值来获取上一级的。类推。 把所有上一级的ID都读出来了。然后分别绑定。不就可以了?
      

  9.   

    表1存的是洲的数据
    表2存的是国家的数据。(表2存有表1的ID)
    表3存的是省的数据。(表3存有表2的ID)我要从表3开始查询,怎么能把表2和表1的数据绑定出来呢?谢谢了!
      

  10.   

    数据是:
    表1 洲:ID 1亚洲、ID 2欧洲
    表2 国家:ID 1中国(存的是表1中的ID 1)、ID 2日本、ID 3韩国
    表3 省:(比如是中国的)ID 1河北省(存的是表2中的ID 2)怎么查询呢?
      

  11.   

    例如三级。第三级的和第二级的本来就知道了吧。因为有主键和父ID,那就再通过父ID,去读上面的表的父ID,不就可以了么?
      

  12.   

    像这样的话你就先获得 具体位置的ID 比如你的河北省的ID1 通过这个和你的省表链接,这样就可以获得国家表的ID  在通过国家表的ID链接洲表查出洲表中的ID。 之后开始绑定和选中操作 依次是:洲表-》国家表-》地区表  这个样子就恢复了文章发布时的数据。 
      

  13.   

    还是表设计不太合理~~如果是存一张表的话就好办了~HTML代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>    <script language="javascript" type="text/javascript" src="jquery-1.4.2.js"></script>    <%if (false)
          { %>    <script type="text/javascript" src="jquery-1.4.2-vsdoc.js"></script>    <%} %>    <script type="text/javascript">
            $.ajaxSetup({ async: false });
            var randomnum = Math.random();        $(document).ready(function() {
                $("#ddl1").append("<option value='-1' selected='selected'>请选择...</option>");
                $.getJSON("loadClass.ashx?num=" + randomnum, { "ddlId": 0 }, function(data) {                for (var i = 0; i < data.length; i++) {
                        $("#ddl1").append($("<option></option>").val(data[i].ID).html(data[i].Cname));
                    };                $("#ddl1").change(function() { GetItem($(this).val(), this); });            });
            });        function GetItem(parentId, obj) {            $.getJSON("loadClass.ashx?num=" + randomnum, { "ddlId": parentId }, function(data) {                $(obj).nextAll(".ddl").remove();                if (data != null) {
                        $("<select>", {
                            "class": "ddl",
                            change: function() {
                                GetItem($(this).val(), this);
                            }
                        }).appendTo($("#myDiv"));                    $($(".ddl")[$(".ddl").length - 1]).append("<option value='-1' selected='selected'>请选择...</option>");
                        for (var i = 0; i < data.length; i++) {
                            $($(".ddl")[$(".ddl").length - 1]).append($("<option></option>").val(data[i].ID).html(data[i].Cname));
                        };
                    }
                });        }        function GetDropDownListValue() {
                var ddlValue;
                var ddlCount = $(".ddl").length;
                for (var i = ddlCount - 1; i >= 0; i--) {
                    if (i != 0) {
                        if ($($(".ddl")[i]).val() != -1) {
                            ddlValue = $($(".ddl")[i]).val();
                            break;
                        }
                    } else {
                        if ($($(".ddl")[i]).val() == -1) {
                            alert("请先选择一个选项");
                            return;
                        } else {
                            ddlValue = $($(".ddl")[i]).val();
                            break;
                        }
                    }
                }
                alert(ddlValue);
            }    </script></head>
    <body>
        <form id="form1" runat="server">
        <div id="myDiv">
            <select id="ddl1" class="ddl">
            </select>
        </div>
        <input type="button" value="取值" onclick="GetDropDownListValue();" />
        </form>
    </body>
    </html>
    一般处理程序:<%@ WebHandler Language="C#" Class="loadClass" %>using System;
    using System.Web;using System.Data;
    using System.Text;
    using System.Data.SqlClient;public class loadClass : IHttpHandler
    {    public void ProcessRequest(HttpContext context)
        {
            int strId = Convert.ToInt32(context.Request.QueryString["ddlId"]);
            string strSQL = "select * from QuestionType where QuTypeFatherId=" + strId + "  order by QuTypeId asc ";
            SqlConnection con = new SqlConnection(@"data source=.;initial catalog=MyTestDataBase;user id=sa;password=19831016");
            SqlDataAdapter adp = new SqlDataAdapter(strSQL, con);
            DataTable dt = new DataTable();
            con.Open();
            adp.Fill(dt);
            con.Close();        StringBuilder strClass = new StringBuilder();
            if (dt.Rows.Count != 0)
            {
                strClass.Append("[");
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    strClass.Append("{");
                    strClass.Append("\"ID\":\"" + dt.Rows[i]["QuTypeId"].ToString() + "\",");
                    strClass.Append("\"Cname\":\"" + dt.Rows[i]["QuTypeName"].ToString() + "\"");                if (i != dt.Rows.Count - 1)
                    {
                        strClass.Append("},");
                    }
                }
                strClass.Append("}");
                strClass.Append("]");
            }
            else
            {
                strClass = strClass.Append("");
            }
            context.Response.ContentType = "application/json";
            context.Response.ContentEncoding = Encoding.UTF8;
            context.Response.Write(strClass.ToString());
            context.Response.End();    }    public bool IsReusable
        {
            get
            {
                return false;
            }
        }}
    数据库:create database MyTestDataBase
    gouse MyTestDataBase
    goif exists(select * from sysobjects where name = 'QuestionType')
    drop table QuestionType
    gocreate table QuestionType
    (
        QuTypeId int primary key identity(1, 1),
        QuTypeFatherId int not null,
        QuTypeName varchar(50) unique not null,
        QuTypeIsDel bit default(0) not null
    )
    goinsert into QuestionType values(0, '生活',0)
    insert into QuestionType values(0, '电脑',0)
    insert into QuestionType values(1, '服装',0)
    insert into QuestionType values(1, '美容',0)
    insert into QuestionType values(1, '美食',0)
    insert into QuestionType values(1, '购房',0)
    insert into QuestionType values(2, '装机',0)
    insert into QuestionType values(2, '硬件',0)
    insert into QuestionType values(2, '软件',0)
    insert into QuestionType values(2, '互联网',0)
    insert into QuestionType values(8, 'CPU',0)
    insert into QuestionType values(8, '光驱',0)
    insert into QuestionType values(8, '显卡',0)
    insert into QuestionType values(8, '内存',0)
    insert into QuestionType values(13, 'NVIDIA',0)
    insert into QuestionType values(13, 'ATI',0)
    insert into QuestionType values(13, '集成显卡',0)
    insert into QuestionType values(15, 'geForce',0)
    insert into QuestionType values(15, 'MX系列',0)
    insert into QuestionType values(18, '6series',0)
    insert into QuestionType values(18, '7series',0)
    insert into QuestionType values(18, '8series',0)
    insert into QuestionType values(18, '9series',0)
    insert into QuestionType values(22, '8300',0)
    insert into QuestionType values(22, '8300GT',0)
    insert into QuestionType values(22, '8500',0)
    insert into QuestionType values(22, '8500GT',0)
    insert into QuestionType values(22, '8600',0)
    insert into QuestionType values(22, '8600GT',0)
    insert into QuestionType values(22, '8800',0)
    insert into QuestionType values(22, '8800GT',0)
    insert into QuestionType values(16, 'HD5450',0)
    insert into QuestionType values(16, 'HD5770',0)
    insert into QuestionType values(16, 'HD5970',0)
    insert into QuestionType values(16, 'HD5670',0)
    insert into QuestionType values(16, 'HD5570',0)
    insert into QuestionType values(16, 'HD5870',0)select * from QuestionType