非常之急,二级联动的菜单应该怎么传值到数据库啊,没分了,没办法.

hunanchina 2007-01-05 11:55:24

private DataTable Get_Dt(string sql)
{

String strConnection=ConfigurationSettings.AppSettings["ConnectionString"];
SqlConnection myConnection=new SqlConnection(strConnection);

myConnection.Open();


SqlDataAdapter myAdp=new SqlDataAdapter(sql,myConnection);

DataTable myDt = new DataTable();

try
{
//填充数据
myAdp.Fill(myDt);
//返回数据集
return(myDt);
}
catch(OleDbException ex)
{
//显示错误信息
throw ex;
}
finally
{
//关闭数据库连接
myConnection.Close();
}
}

private void Page_Load(object sender, System.EventArgs e)
{
//接收参数
string sortid = this.Request.QueryString["sortid"];
//判断参数是否为空(注意:空有两种形式,一种为null,一种为空)
if(sortid + "a" != "a")
{
//如果有传递上述参数,则表示联动操作开始
this.xmlBind(sortid);
}

//在页面初次加载的时候,绑定第一/二个下拉框,第二个下拉框为所有值
//但实际上,第二个下拉框应显示空值,因为所有值可能也不少,最好只显示一个"请选择"字样
if(!this.IsPostBack)
{
this.DownBind1();
this.DownBind2();
}
}

private void xmlBind(string sortid)
{
string mystr = "";
string sql = "select typename,typeid from class_2 where sortid = " + sortid ;
DataTable mytab = this.Get_Dt(sql);

//将取到的值形成: ID|名称,ID|名称...这样的形式
if(mytab.Rows.Count != 0)
{
for(int i=0;i<mytab.Rows.Count;i++)
{
mystr += "," + mytab.Rows[i]["typeid"].ToString() + "|" + mytab.Rows[i]["typename"].ToString();
}
mystr = mystr.Substring(1);
}

//输出页面
this.Response.Write(mystr);
this.Response.End();
}


private void DownBind1()
{
//显示所有的主分类
string sql = "select sortid,sort from class_1 order by sortid asc ";
DataTable mytab = this.Get_Dt(sql);

//绑定第一个下拉框
this.mydown1.DataSource = mytab;
this.mydown1.DataValueField = "sortid";
this.mydown1.DataTextField = "sort";
this.mydown1.DataBind();

//添加一个"请选择"行
this.mydown1.Items.Insert(0,new ListItem("请选择分类",""));

//为此下拉框添加一个默认选择项(此处默认为sortid = 1
//做选项时,如果你添加的选定项而此控件中却没有此项,即会出错
//如:this.mydown1.SelectedValue = "1";
//所以此处以如下方式进行选定
ListItem myItem = this.mydown1.Items.FindByValue("1");
if(myItem != null)
{
myItem.Selected = true;
}

//为此下拉框添加选择事件,第一个参数是自己,第二个参数为要填充的下拉框的名称
this.mydown1.Attributes.Add("onchange","XmlPost(this,'" + this.mydown2.ClientID + "');");
}

/// <summary>
/// 绑定第二个下拉框
/// </summary>
private void DownBind2()
{
//默认显示分类号为1的所有子类
   string sql = "select sortid,typename,typeid from class_2 where sortid =1" ;
   DataTable mytab = this.Get_Dt(sql);

//绑牢控件
   this.mydown2.DataSource = mytab;
   this.mydown2.DataSource = mytab;
   this.mydown2.DataValueField = "typeid";
   this.mydown2.DataTextField = "typename";
   this.mydown2.DataBind();

//添加一个空的首行
this.mydown2.Items.Insert(0,new ListItem("请选择名称",""));
}


#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.mydown1.SelectedIndexChanged += new System.EventHandler(this.mydown1_SelectedIndexChanged);
this.dp1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void mydown1_SelectedIndexChanged(object sender, System.EventArgs e)
{

}

private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{

}

private void Button1_Click(object sender, System.EventArgs e)
{
if(Session["Page1Data"] != null)
{
if((String)Session["Page1Data"] == Request.Form.ToString())
{
Response.Write("完全相同的类容不能重复提交!");
Response.End();
}
}
Session["Page1Data"] = Request.Form.ToString();

if(Page.IsValid)
// if(!Page.IsPostBack)
{
String strConnection=ConfigurationSettings.AppSettings["ConnectionString"];//公用
cn=new SqlConnection(strConnection);
SqlCommand cm=new SqlCommand("inset",cn);
cm.CommandType=CommandType.StoredProcedure;
DateTime dt=DateTime.Now;
cm.Parameters.Add(new SqlParameter("@usort",SqlDbType.VarChar,50));
cm.Parameters.Add(new SqlParameter("@utypename",SqlDbType.VarChar,50));
cm.Parameters.Add(new SqlParameter("@uwenti",SqlDbType.VarChar,50));
cm.Parameters.Add(new SqlParameter("@uwentilist",SqlDbType.VarChar,50));
cm.Parameters.Add(new SqlParameter("@uprio",SqlDbType.VarChar,50));
cm.Parameters.Add(new SqlParameter("@ipaddress",SqlDbType.VarChar,50));
cm.Parameters.Add(new SqlParameter("@uhaoma",SqlDbType.VarChar,50));
cm.Parameters.Add(new SqlParameter("@sysdate",SqlDbType.DateTime,8));
// cm.Parameters["@usort"].Value=mydown1.SelectedItem.Value;
cm.Parameters["@usort"].Value=mydown1.SelectedItem.Value;
cm.Parameters["@utypename"].Value=mydown2.SelectedItem.Value;
cm.Parameters["@uwenti"].Value=dp1.SelectedItem.Value;
cm.Parameters["@uwentilist"].Value=t1.Text;
cm.Parameters["@uprio"].Value=rb1.SelectedItem.Value;
cm.Parameters["@ipaddress"].Value=Request.UserHostAddress;
cm.Parameters["@sysdate"].Value=dt;
cm.Connection.Open();
try
{

cm.ExecuteNonQuery();
// Response.Write("<script language=javascript>")
Response.Write("<script language=javascript>alert('提交成功,请等待管理员处理');</script>");
// Response.Redirect("usershow.aspx");

}
catch(SqlException)
{


Lbl_note.Text="添加失败";
Lbl_note.Style["color"]="red";
}
cm.Connection.Close();
}
}
}
}
...全文
348 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hunanchina 2007-01-05
  • 打赏
  • 举报
回复
有没有实现过啊
aliketen 2007-01-05
  • 打赏
  • 举报
回复
ajax不是可以吗?
500公里之外 2007-01-05
  • 打赏
  • 举报
回复
好长,顶了,我也在想怎么在服务器端获得联动DROPDOWNLIST的值

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧