现已将两个dropdownlist关联,选中第一个dropdownlist表示一个大类进行选择后,第二个dropdownlist会显示出第一个的相应子类。但是插入操作时,第二个dropdownlist中插入的数据永远都是子类中的第一个数据,我想了好久都没有明白,望高人指点。
以下是源码关键问题是:(第一个dropdownlist是ddlclass,第二个dropdownlist是ddldevice),ddlclass是设备的大类别,ddldevice是设备的编号,选中大类别后再去选择编号,但是插入的设备编号却永远是排在一个个的编号,而非选中的编号
前台:
后台代码
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Data.SqlClient;
namespace ServiceDesk.SD
{
public partial class sduseless : System.Web.UI.Page
{
// 定义连接字符串
private static string strCon = System.Configuration.ConfigurationManager.AppSettings["connStr"];
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//绑定ddlclass
SqlConnection con = new SqlConnection(strCon);
con.Open();
SqlCommand cmd = new SqlCommand("select * from class ", con);
SqlDataReader reader = cmd.ExecuteReader();
ddlclass.DataSource = reader;
ddlclass.DataTextField = "classname";
ddlclass.DataValueField = "classno";
ddlclass.DataBind();
reader.Close(); //绑定ddldevice
SqlCommand cmd2 = new SqlCommand("select * from deviceinfo where classno=" + this.ddlclass.SelectedValue, con);
reader = cmd2.ExecuteReader();//上面定义过reader,这里就不用从新定义
ddldevice.DataSource = reader;
ddldevice.DataTextField = "deviceno";
ddldevice.DataValueField = "classno";
ddldevice.DataBind();
reader.Close();
}
}
// 验证用户名
private bool blnCheckUser()
{
// 数据库连接
SqlConnection objConnection = new SqlConnection(strCon);
// 数据库命令
SqlCommand objCommand = new SqlCommand("", objConnection);
// 设置Sql语句
objCommand.CommandText =
" SELECT userno FROM USERS WHERE userno = @user";
// 设置Sql语句参数
objCommand.Parameters.Add("user", SqlDbType.VarChar);
// Sql语句参数赋值
objCommand.Parameters["user"].Value = txtuserno.Text.Trim(); try
{
// 打开数据库连接
if (objConnection.State == ConnectionState.Closed) objConnection.Open();
// 获取运行结果
SqlDataReader result = objCommand.ExecuteReader();
if (result.Read() == false)
{
lblCheck.Visible = true;
return false;
}
else
{
lblCheck.Visible = false;
return true;
}
}
catch (SqlException exp)
{
Session["Error"] = exp.Message;
Response.Redirect("Error.aspx"); return false;
}
finally
{
// 关闭数据库连接
if (objConnection.State == ConnectionState.Open) objConnection.Close();
}
}
protected void ddlclass_SelectedIndexChanged(object sender, EventArgs e)
{
//ddlclass与ddldevice数据绑定的联动性
string code = this.ddlclass.SelectedValue;
SqlConnection con = new SqlConnection(strCon);
con.Open();
SqlCommand cmd = new SqlCommand("select * from deviceinfo where classno=" + code, con);
SqlDataReader reader = cmd.ExecuteReader();
this.ddldevice.DataSource = reader;
this.ddldevice.DataTextField = "deviceno";
this.ddldevice.DataValueField = "classno";
this.ddldevice.DataBind();
reader.Close();
con.Close();
}
protected void btnRegion_Click(object sender, EventArgs e)
{
if (blnCheckUser() == false) return; // 数据库连接
SqlConnection conn = new SqlConnection(strCon);
// 数据库命令
SqlCommand objCommand = new SqlCommand("", conn);
// 设置Sql语句
objCommand.CommandText =
"insert INTO uselesslist (userno, classno, deviceno)" +
"values (@userno,@classno,@deviceno) ";
// 设置Sql语句参数
objCommand.Parameters.Add("userno", SqlDbType.VarChar);
objCommand.Parameters.Add("classno", SqlDbType.VarChar);
objCommand.Parameters.Add("deviceno", SqlDbType.VarChar);
// Sql语句参数赋值
objCommand.Parameters["userno"].Value = txtuserno.Text.Trim();
objCommand.Parameters["classno"].Value = ddlclass.Text.Trim();
objCommand.Parameters["deviceno"].Value = ddldevice.SelectedItem.ToString();
try
{
// 打开数据库连接
if (conn.State == ConnectionState.Closed) conn.Open();
// 插入数据
objCommand.ExecuteNonQuery();
}
catch (SqlException exp)
{
Session["Error"] = exp.Message;
Response.Redirect("Error.aspx");
}
finally
{
// 关闭数据库连接
if (conn.State == ConnectionState.Open) conn.Close();
}
Response.Redirect("2.aspx");
}
protected void btnClear_Click(object sender, EventArgs e)
{
txtuserno.Text = "";
}
}
}
以下是源码关键问题是:(第一个dropdownlist是ddlclass,第二个dropdownlist是ddldevice),ddlclass是设备的大类别,ddldevice是设备的编号,选中大类别后再去选择编号,但是插入的设备编号却永远是排在一个个的编号,而非选中的编号
前台:
后台代码
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Data.SqlClient;
namespace ServiceDesk.SD
{
public partial class sduseless : System.Web.UI.Page
{
// 定义连接字符串
private static string strCon = System.Configuration.ConfigurationManager.AppSettings["connStr"];
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//绑定ddlclass
SqlConnection con = new SqlConnection(strCon);
con.Open();
SqlCommand cmd = new SqlCommand("select * from class ", con);
SqlDataReader reader = cmd.ExecuteReader();
ddlclass.DataSource = reader;
ddlclass.DataTextField = "classname";
ddlclass.DataValueField = "classno";
ddlclass.DataBind();
reader.Close(); //绑定ddldevice
SqlCommand cmd2 = new SqlCommand("select * from deviceinfo where classno=" + this.ddlclass.SelectedValue, con);
reader = cmd2.ExecuteReader();//上面定义过reader,这里就不用从新定义
ddldevice.DataSource = reader;
ddldevice.DataTextField = "deviceno";
ddldevice.DataValueField = "classno";
ddldevice.DataBind();
reader.Close();
}
}
// 验证用户名
private bool blnCheckUser()
{
// 数据库连接
SqlConnection objConnection = new SqlConnection(strCon);
// 数据库命令
SqlCommand objCommand = new SqlCommand("", objConnection);
// 设置Sql语句
objCommand.CommandText =
" SELECT userno FROM USERS WHERE userno = @user";
// 设置Sql语句参数
objCommand.Parameters.Add("user", SqlDbType.VarChar);
// Sql语句参数赋值
objCommand.Parameters["user"].Value = txtuserno.Text.Trim(); try
{
// 打开数据库连接
if (objConnection.State == ConnectionState.Closed) objConnection.Open();
// 获取运行结果
SqlDataReader result = objCommand.ExecuteReader();
if (result.Read() == false)
{
lblCheck.Visible = true;
return false;
}
else
{
lblCheck.Visible = false;
return true;
}
}
catch (SqlException exp)
{
Session["Error"] = exp.Message;
Response.Redirect("Error.aspx"); return false;
}
finally
{
// 关闭数据库连接
if (objConnection.State == ConnectionState.Open) objConnection.Close();
}
}
protected void ddlclass_SelectedIndexChanged(object sender, EventArgs e)
{
//ddlclass与ddldevice数据绑定的联动性
string code = this.ddlclass.SelectedValue;
SqlConnection con = new SqlConnection(strCon);
con.Open();
SqlCommand cmd = new SqlCommand("select * from deviceinfo where classno=" + code, con);
SqlDataReader reader = cmd.ExecuteReader();
this.ddldevice.DataSource = reader;
this.ddldevice.DataTextField = "deviceno";
this.ddldevice.DataValueField = "classno";
this.ddldevice.DataBind();
reader.Close();
con.Close();
}
protected void btnRegion_Click(object sender, EventArgs e)
{
if (blnCheckUser() == false) return; // 数据库连接
SqlConnection conn = new SqlConnection(strCon);
// 数据库命令
SqlCommand objCommand = new SqlCommand("", conn);
// 设置Sql语句
objCommand.CommandText =
"insert INTO uselesslist (userno, classno, deviceno)" +
"values (@userno,@classno,@deviceno) ";
// 设置Sql语句参数
objCommand.Parameters.Add("userno", SqlDbType.VarChar);
objCommand.Parameters.Add("classno", SqlDbType.VarChar);
objCommand.Parameters.Add("deviceno", SqlDbType.VarChar);
// Sql语句参数赋值
objCommand.Parameters["userno"].Value = txtuserno.Text.Trim();
objCommand.Parameters["classno"].Value = ddlclass.Text.Trim();
objCommand.Parameters["deviceno"].Value = ddldevice.SelectedItem.ToString();
try
{
// 打开数据库连接
if (conn.State == ConnectionState.Closed) conn.Open();
// 插入数据
objCommand.ExecuteNonQuery();
}
catch (SqlException exp)
{
Session["Error"] = exp.Message;
Response.Redirect("Error.aspx");
}
finally
{
// 关闭数据库连接
if (conn.State == ConnectionState.Open) conn.Close();
}
Response.Redirect("2.aspx");
}
protected void btnClear_Click(object sender, EventArgs e)
{
txtuserno.Text = "";
}
}
}
解决方案 »
- 一个修改的问题????
- 请大家评论一下这段防止sql注入的代码的质量。
- 在项目文件中找不到添加用户控件的选项,是怎么回事
- 高分求全球化应用程序解决方案:
- ASP中confirm返回值与数据库删除问题
- 急求行业网站程序,如何开发一个好的行业网站
- GridView用datasource绑定,如何增加,共几条记录,几页,当前在第几页,有没有办法在保留原翻页功能的基础上在后面加上一个显示?????
- mspx是什么网页?用什么工具开发的?
- asp.net模板要怎样使用啊?
- 帮忙写一个sql语句,好像难度蛮大,高手进来挑战一下自我
- 静态方法里可以调用类吗?
- dropdownlist绑定数据后,进行插入数据错误
代码有点乱,建议使用SqlHelper这样的数据库操作类