现在主要想执行SelectedIndexChanged事件重新加载省份的下拉的数据。
点击大区下拉菜单,执行 SelectedIndexChanged ,重新加载省份这个下拉的数据,为什么到最后一行就报错呢?错误是这样的“{"A field with the name 'province_name' was not found on the selected data source."}”
那为什么这个方法bindTitle()可以用呢?
public partial class sys_city_addCity : System.Web.UI.Page
{
    DoDataBase1 db = new DoDataBase1();
    DataSet ds = new DataSet();
    DataSet ds1 = new DataSet();
   
    DataSet ds_drop = new DataSet();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack) {
            bindTitle();
        }
       
    }
    protected void ASPxButton2_Click(object sender, EventArgs e)
    {    }    private void bindTitle()
    {//对一个下拉列表的数据绑定, textfield和valuefield属性       
        string sql = "select area_name from area";
        ds = db.GetDataSet(sql);
        this.area_name.DataSource = ds;
        this.area_name.TextField = "area_name";
        this.area_name.ValueField = "area_name";
        this.area_name.DataBindItems();    }    protected void area_name_SelectedIndexChanged(object sender, EventArgs e)
    {
        string droparea_name = area_name.SelectedItem.Value.ToString();
        string _sql = "select province_name from province where area_name = '"+droparea_name+"'";
        ds_drop = db.GetDataSet(_sql);
        this.province_name.DataSource = droparea_name;
        this.province_name.TextField = "province_name";
        this.province_name.ValueField = "province_name";
        //for (var i = 0; i < carViewListLength; i++)
        //{        //    var varItem = new Option(carViewList[i], carViewList[i]);
        //    document.getElementById("objectPointList").options.add(varItem);        //}
        
        //DataTable dt = new DataTable();
        //dt = ds_drop.Tables[0];
        //for (int i = 0; i < dt.Rows.Count; i++)
        //{
        
        //    Response.Write(  dt.Rows[i][i].ToString());        //}
        this.province_name.DataBindItems();
    }
}

解决方案 »

  1.   

    还有第一次PageLoad 里面绑定数据源的 时候  this.area_name.DataBindItems();
    也应该是  this.area_name.DataBind();  吧!
      

  2.   

    我自己搞定了。不是那个问题。
    我把解决的代码弄出来
    整了一下午了。闹心的东西!~~~~~~~~
    有二点要注意:
    第一点,AutoPostBack="True"把这个属性设置成true
    第二点 就要看代码了。
     protected void area_name_SelectedIndexChanged(object sender, EventArgs e)
        {
            string droparea_name = area_name.SelectedItem.Value.ToString();
            string _sql = "select province_name from province where area_name = '"+droparea_name+"'";        province_name.Columns.Clear();        ds1 = db.GetDataSet(_sql);
            this.province_name.DataSource = ds1;
            this.province_name.TextField = "province_name";
            this.province_name.ValueField = "province_name";
            this.province_name.DataBind();结贴了。哈哈。~~~~~~~~~