错误信息指出SqlDataReader dr = comm.ExecuteReader();有误。
所有代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page 
{
    private SqlConnection con;
    private SqlDataAdapter da;
    private DataSet ds;
    protected string pagetitle;     //网页标题     protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            con=new SqlConnection("server=.;database=testFrameWork;uid=sa;pwd='sa'");
            da = new SqlDataAdapter("select * from Repast_area", con);
            ds = new DataSet();
            da.Fill(ds, "area");
            ds.Tables["area"].DefaultView.Sort = "area_id ASC";
            ddlS.DataSource = ds.Tables["area"].DefaultView;
            ddlS.DataValueField = "area_id";
            ddlS.DataTextField = "area_name";
            ddlS.DataBind();
        }
        BindDrop();        pagetitle = Label1.Text; 
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Write(ddlS.SelectedItem.Text);
        Response.Write(ddlC.SelectedItem.Text);
    }    protected void BindDrop()
    {
        //ddlS.Attributes.Add("onchange", "Go(this)");
        string str = Request.QueryString["parent_id"];
        string str1 = ddlS.SelectedValue;
        Response.Write(str1);
        //如果str加个字符串!=原来的字符串则说明触发过ddlS的onchange事件
        if ((str + "abc") != "abc")
        {
            //绑定 ddlC控件
            BindChild(str);//把传来的父DropDownList的value做为参数
        }
        else
            BindParent(str1);
    }
    protected void BindParent(string str)
    {
        //如果是第一次请求或者是刷新这个页面则根据ddlS的值来选择
        //把参数转化成int
        int i = Convert.ToInt32(str);
        ddlC.Items.Clear();
        ddlC.Items.Add(new ListItem("请选择", "0"));
        //得到数据库连接字符串
        string connStr = "server=.;database=testFrameWork;uid=sa;pwd='sa'";
        //初始化个conn对象
        SqlConnection conn = new SqlConnection(connStr);
        //数据库语句
        string commStr = string.Format("select AR_id,AR_name from Area_road where area_id={0}", i);
        //建立数据库命令对象
        SqlCommand comm = new SqlCommand(commStr, conn);
        //打开数据库
        conn.Open();
        //执行命令
        SqlDataReader dr = comm.ExecuteReader();
        //循环dr,给ddlS添加条目
        while (dr.Read())
        {
            ddlC.Items.Add(new ListItem(dr[1].ToString(), dr[0].ToString()));
            //也可以这样
            //ddlS.Items.Add(new ListItem(dr["phone_text"].ToString(),dr["phone_value"].ToString()));
        }
        ddlC.ClearSelection();
        ddlS.Items[0].Selected = false;
        //添加下面这话的意思是当点提交按钮提交窗体的时候第二个ddlC的状态能够得到保存
        ddlC.SelectedValue = Request.Form["ddlC"];
        dr.Close();
        conn.Close();
    }
    protected void BindChild(string str)
    {
        //通过js给包括dropdownlist任何控件添加的内容不会被保存状态
        //把参数转化成int
        int i = Convert.ToInt32(str);        string result = "";        Response.Clear();
        string connStr = "server=.;database=testFrameWork;uid=sa;pwd='sa'";
        SqlConnection conn = new SqlConnection(connStr);
        SqlCommand comm = conn.CreateCommand();
        string commStr = string.Format("select AR_name,AR_id from Area_road where area_id={0}", i);
        comm.CommandText = commStr;
        conn.Open();
        SqlDataReader dr = comm.ExecuteReader();
        while (dr.Read())
        {
            result += "," + dr[1].ToString() + "|" + dr[0].ToString();
        }
        Response.Write(result);
        Response.Flush();
        Response.Close();
        dr.Close();
        conn.Close();
    }
    protected void btnOk_Click(object sender, EventArgs e)
    {
        //Response.Write(ddlS.SelectedItem.Text);
        //Response.Write(ddlC.SelectedItem.Text);
        Label1.Text = ddlS.SelectedItem.Text + "<br>" + ddlC.SelectedItem.Text;
    }
}

解决方案 »

  1.   

    列名 'area_id' 无效。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 列名 'area_id' 无效。源错误: 
    行 79:         //鎵ц鍛戒护
    行 80:         SqlDataReader dr ;
    行 81:         dr = comm.ExecuteReader();
    行 82:         //寰幆dr锛岀粰ddlS娣诲姞鏉$洰
    行 83:         while (dr.Read())
     源文件: d:\桌面\无刷新二级联动\无刷新二级联动\select\Default.aspx.cs    行: 81 
      

  2.   

    string commStr = string.Format("select AR_name,AR_id from Area_road where area_id={0}", i);
    这句话应该错了,楼主确定Area_road 有area_id字段??