我是第一次学习控件的数据绑定,在做一组DropDownList的时候遇到了一些问题。通过提问和自己摸索,最终都解决了。现在拿来分享一下。首先是DropDownList数据绑定的部分,要用到下面的代码            SqlConnection myConnection = new SqlConnection(strCon);
            SqlDataAdapter myAdapter1 = new SqlDataAdapter(strQuery1, myConnection);
            DataSet myDataSet1 = new DataSet();
            myAdapter1.Fill(myDataSet1, "LevelOfRoad");
            DropDownList1.DataSource = myDataSet1;
            DropDownList1.DataValueField = "道路等级";
            DropDownList1.DataTextField = "道路等级";
            DropDownList1.DataBind();
然后,就是使用ADO.NET查询数据库。由于道路等级分为:高速、一级、二级、三级、四级,用ORDER BY 道路等级 并不能实现他们的排序(实际上实现的是以它们汉语拼音的首字母排序),所以就只好用了 " ORDER BY CASE 道路等级 when' 高速' then 1 when '一级' then 2 when '二级' then 3 when '三级' then 4 when'四级'then 5 end ";的查询语句。虽然很冗长,但总值实现了排序。我要做两个DropDownList,他们之间有逻辑关系。即:第一个DropDownList选定后,第二个DropDownList的内容才能生成。
开始我是这样写的:
string Province=DropDownList1.SelectedItem.Text.ToString();
string strQuery2 = "SELECT myCity FROM area WHERE myProvince="+Province;
SqlDataAdapter myAdapter1 = new SqlDataAdapter(strQuery2, myConnection);
但是不行,因为WHERE后面的关键字需要用单引号括起来。后来问了一下,改成了:
tring strQuery2 =string.Format( "SELECT myCity FROM area WHERE '{0}'",Province);
这样就没问题了。第三个问题是,编译时出现:
当前上下文不存在名称:“DropDownList2”
但我明明 添加了DropDownList2控件。
把DropDownList1注释掉、给daoludengji一个初值以后,仍然是同样的报错。
无意中我发现<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Function.aspx.cs" Inherits="_Function" %>
这一句中的问题。把Inherits的值改为_Defult以后就可以了。(具体是为什么现在还不明白)接下来遇到的问题是,改变第一个DropDownList中的值,第二个DropDownList的值并没有发生变化,而是始终为同一值,即没办法取得第一个DropDownList选中的值。后来看到别人的文章,知道是页面加载的问题。我本来的代码是:
if (!IsPostBack)
        {
            SqlConnection myConnection = new SqlConnection(strCon);            SqlDataAdapter myAdapter1 = new SqlDataAdapter(strQuery1, myConnection);
            DataSet myDataSet1 = new DataSet();
            myAdapter1.Fill(myDataSet1, "LevelOfRoad");
            DropDownList1.DataSource = myDataSet1;
            DropDownList1.DataValueField = "道路等级";
            DropDownList1.DataTextField = "道路等级";
            DropDownList1.DataBind();
            daoludengji = Convert.ToString (DropDownList1.SelectedValue);
            DropDownList1.AutoPostBack = true ;
         }我将它改为if (!IsPostBack)
        {
            SqlConnection myConnection = new SqlConnection(strCon);            SqlDataAdapter myAdapter1 = new SqlDataAdapter(strQuery1, myConnection);
            DataSet myDataSet1 = new DataSet();
            myAdapter1.Fill(myDataSet1, "LevelOfRoad");
            DropDownList1.DataSource = myDataSet1;
            DropDownList1.DataValueField = "道路等级";
            DropDownList1.DataTextField = "道路等级";
            DropDownList1.DataBind();          }
            daoludengji = Convert.ToString (DropDownList1.SelectedValue);
            DropDownList1.AutoPostBack = true ;
        
通过一次次的修改,最终得到了想要的结果!希望可以对大家有所帮助!