当前位置:编程学习 > C#/ASP.NET >>

急求地区之间的二级级联的错误解决

前台代码如下:
<script language="javascript" type="text/javascript">
  <!--
  // ACLOUD 常用JS函数
  function getBid(s){
return document.getElementById(s);
}
function getBmc(s){
return document.getElementByName(s);
}

  //显示分类列表
function showNext(sid,obj)
  {  
  if(sid==null || sid=="" || sid.length<1)return;
  var slt =getBid(obj);
var v = Company_Company_zc.getNextClass(sid).value; // 类的名称
//alert(v);
//return;
if (v != null){   
if(v != null && typeof(v) == "object" && v.Tables != null)

slt.length = 0;
slt.options.length = 0;
slt.options.add(new Option("请选择",0));
//加了个“请选择”主要为了触发onchange事件
if(obj=="ddl2"){
  

for(var i=0; i<v.Tables[0].Rows.length; i++)
     {
     var txt = v.Tables[0].Rows[i].txt; //这个地方需要注意区分大小写
       var vol = v.Tables[0].Rows[i].vol; //跟dataset表的列名称要一致
       slt.options.add(new Option(txt,vol));
     }
}

return;
  }
    
    
  -->
</script>
后台代码如下:
 protected void Page_Load(object sender, EventArgs e)
  {
  //必要的级联中用到
  AjaxPro.Utility.RegisterTypeForAjax(typeof(Company_Company_zc));
  if (!IsPostBack)
  {
  BindDc();
  }
  }
  public SqlConnection myConn()
  {
  SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=byszp;Integrated Security=True");
  try
  {
  conn.Open();
  return conn;
  }
  catch
  {
  throw;
  }
  }
  /// <summary>
  /// 获取下级分类
  /// </summary>
  [AjaxPro.AjaxMethod]
  public DataSet getNextClass(string cid)
  {
  //因为不希望页面可以知道字段名称 所以 as txt,id as vol 如果是sql ser 可以用 =  
  //页面获取的 列名称 必须跟这个一同样 而且区分大小写 一般都是这个地方容易疏忽了
  //所以二级分类没变化
  string sql = @"select dqmc as txt,dqbh as vol from area where sfbh=" + cid;
  try
  {
  return getDs(sql);
  }
  catch
  {
  //throw;
  return null;
  }
  }

  /// <summary>
  /// 返回一个DataSet
  /// </summary>
  /// <param name="SQL"></param>
  /// <returns></returns>
  public DataSet getDs(string SQL)
  {
  SqlConnection conn = myConn();
  DataSet Ds = new DataSet();
  SqlDataAdapter Da = new SqlDataAdapter(SQL, conn);
  try
  {
  Da.Fill(Ds);
  return Ds;
  }
  catch
  {
  return null;
  //throw;
  }

  }


  /// <summary>
  /// //数据绑定
  /// </summary>
  private void BindDc()
  {
  //第一个
  string sql = @"select sfmc,sfbh from province";
  ddl1.DataSource = getDs(sql);
  ddl1.DataTextField = "sfmc";
  ddl1.DataValueField = "sfbh";
  ddl1.DataBind();
  if (ddl1.DataSource != null) ddl1.Attributes.Add("onchange", "showNext(this.options[SelectedIndex].value,'ddl2');");

  //可以先判断 DropDownList.SelectedItem.Value
  //第二个

  sql = @"select dqmc,dqbh from area where sfbh=" + ddl1.SelectedItem.Value;
  ddl2.DataSource = getDs(sql);
  ddl2.DataTextField = "dqmc";
  ddl2.DataValueField = "dqbh";
  ddl2.DataBind();
  }
  我是做省份和地区之间的二级级联。在运行的时候,选择省份的时候老是出现 行: 1
错误: 'SelectedIndex' 未定义 求各位前辈帮帮忙,急救! 
 
 
 
--------------------编程问答-------------------- selectedIndex
小写试试 。 --------------------编程问答-------------------- js 中首字母都是小写的 --------------------编程问答-------------------- 也有可能是编码的问题,在传递中出现问题 --------------------编程问答-------------------- 原来的this.options[SelectedIndex] 改成这个就对了 this.options[ddl1。SelectedIndex] --------------------编程问答-------------------- this.options[ddl1.SelectedIndex]
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,