xhj104

无刷新连动菜单2

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
using System.Data.SqlClient;

namespace C2C
{
    
/// <summary>
    
/// WebForm1 的摘要说明。
    
/// </summary>

    public class WebForm1 : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.DropDownList dListParent;
        
protected System.Web.UI.WebControls.DropDownList dListChild;
        
protected System.Web.UI.WebControls.Button Button1;
    
        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
// 在此处放置用户代码以初始化页面
            
//if(!IsPostBack)
            
//{
            string connStr = ConfigurationSettings.AppSettings["strCon2"].ToString();
            
//初始化个conn对象
            SqlConnection conn = new SqlConnection(connStr);
            
//数据库语句
            string commStr = string.Format("select ShengID,MingC from province");
            
//建立数据库命令对象
            SqlCommand comm = new SqlCommand(commStr,conn);
            SqlDataAdapter sda 
= new SqlDataAdapter(comm);
            DataTable dt 
= new DataTable();
            sda.Fill(dt);
            dListParent.DataSource 
= dt;
            dListParent.DataTextField 
= "MingC";
            dListParent.DataValueField 
= "ShengID";
            dListParent.DataBind();
            BindDrop();
//如果不是提交回来就绑定列表框
            
//}
        }


        
Web 窗体设计器生成的代码

        
protected void BindDrop()
        
{
            
//首先我想父dropdownlist也绑定数据库,后面想没必要
            
//if(!IsPostBack)
            
//{
            
//绑定父dListParent
            
//BindParent();
            
//}
            
//获得传递过来的parent_id值,如果是第一次请求他为null
            string str = Request.QueryString["parent_id"];
            
string str1 = dListParent.SelectedValue;;
            Response.Write(str1);
            
//如果str加个字符串!=原来的字符串则说明触发过dListParent的onchange事件
            if((str+"abc")!="abc")
            
{
                
//绑定 dListChild控件
                BindChild(str);//把传来的父DropDownList的value做为参数
            }

            
else
                BindParent(str1);
        }



        
protected void BindParent(string str)
        
{
            
//如果是第一次请求或者是刷新这个页面则根据dListParent的值来选择
            
//把参数转化成int
            dListChild.Items.Clear();
            dListChild.Items.Add(
new ListItem("地区","0"));
            
//得到数据库连接字符串
            string connStr = ConfigurationSettings.AppSettings["strCon2"].ToString();
            
//初始化个conn对象
            SqlConnection conn = new SqlConnection(connStr);
            
//数据库语句
            string commStr = string.Format("select ShiID,MingC from City where ShengID = '{0}'",str);
            
//建立数据库命令对象
            SqlCommand comm = new SqlCommand(commStr,conn);
            
//打开数据库
            conn.Open();
            
//执行命令
            SqlDataReader dr = comm.ExecuteReader();
            
//循环dr,给dListParent添加条目
            while(dr.Read())
            
{
                dListChild.Items.Add(
new ListItem(dr[1].ToString(),dr[0].ToString()));
                
//也可以这样
                
//dListParent.Items.Add(new ListItem(dr["phone_text"].ToString(),dr["phone_value"].ToString()));
            }

            dListParent.Items[
0].Selected = true;
            
//添加下面这话的意思是当点提交按钮提交窗体的时候第二个dListChild的状态能够得到保存
            dListChild.SelectedValue = Request.Form["dListChild"];
            dr.Close();
            conn.Close();
        }



        
protected void BindChild(string str)
        
{
            
//通过js给包括dropdownlist任何控件添加的内容不会被保存状态
            
//把参数转化成int
            
//定义个字符串用保存从数据库返回的数据
            string result = "";
            
//先清空输出的东西
            Response.Clear();
            
string connStr = ConfigurationSettings.AppSettings["strCon2"].ToString();
            SqlConnection conn 
= new SqlConnection(connStr);
            SqlCommand comm 
= conn.CreateCommand();
            
string commStr = string.Format("select ShiID,MingC from City where ShengID = '{0}'",str);
            comm.CommandText 
= commStr;
            conn.Open();
            SqlDataReader dr 
= comm.ExecuteReader();
            
while(dr.Read())
            
{
                result 
+= ","+dr[0].ToString() +"|" + dr[1].ToString();
                
//dListChild.Items.Add(new ListItem(dr[1].ToString(),dr[0].ToString()));
            }

            
//把从数据库得到的信息输出到客户端
            Response.Write(result);
            
//输出完成关闭Response,以免造成不必要的输出
            Response.Flush();
            Response.Close();
            dr.Close();
            conn.Close();
        }


        
private void Button1_Click(object sender, System.EventArgs e)
        
{
            Response.Write(Request.Form[
"dListChild"].ToString());
        }

    }

}

posted on 2006-01-23 15:12  那一片海  阅读(267)  评论(0)    收藏  举报

导航