求救各位高手
2010-05-31 22:34
274 查看
ddlNewType”有一个无效 SelectedValue,因为它不在项目列表中。参数名: value
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.ArgumentOutOfRangeException: “ddlNewType”有一个无效 SelectedValue,因为它不在项目列表中。参数名: value源错误:
行 359: this.txtNewCreateP.Text = uInfo.CreatePerson.Trim();行 360: this.txtMemo.Text = uInfo.Memo.Trim();行 361: this.ddlNewType.SelectedValue = uInfo.Type.Trim();行 362: }行 363: /// <summary> |
protected void btnCreateUser_Click(object sender, EventArgs e) { try { this.clearErrorMsg(); //进入新建模式 this.insertMode(); //显示新建用户区域 this.divUserMng.Visible = true;
} catch { throw; } }
protected void btnSave_Click(object sender, EventArgs e) { try { this.clearErrorMsg(); //获得用户输入的数据 UserInfo uInfo = this.getNewUserInfo(); //调用bll层方法,插入数据 userService.InsertUserInfo(uInfo); //保存完毕,从新绑定数据 this.gvDataBind(); this.insertMode(); } catch(Exception ex) { this.lblCreateError.Text = ex.Message; } }
/// <summary> /// 将界面上的信息封装为UserInfo对象 /// </summary> /// <returns></returns> private UserInfo getNewUserInfo() { UserInfo uInfo = new UserInfo(); uInfo.UserId = this.txtNewUID.Text.Trim(); uInfo.Pwd = this.txtNewPwd.Text.Trim(); uInfo.Type = this.ddlNewType.SelectedValue.ToString().Trim(); uInfo.CreateDate = this.txtNewCreateD.Text.Trim(); uInfo.CreatePerson = this.txtNewCreateP.Text.Trim(); uInfo.Memo = this.txtMemo.Text.Trim(); return uInfo; }
#endregion
#region 界面模式
/// <summary> /// 将详细信息区域设置为新建模式 /// </summary> private void insertMode() { this.clearErrorMsg(); this.txtNewCPwd.Text = ""; this.txtNewCreateP.Text = ""; this.txtNewPwd.Text = ""; this.txtNewUID.Text = ""; this.txtMemo.Text = ""; this.txtNewCreateD.Text = DateTime.Now.ToString().Trim(); this.ddlNewType.SelectedValue = ""; this.setControlStatus(true); this.btnSaveUpdate.Visible = false; }
private void detailMode() { this.clearErrorMsg(); this.divUserMng.Visible = true; this.setControlStatus(false); }
private void editMode() { this.clearErrorMsg(); this.divUserMng.Visible = true;
this.setControlStatus(true); this.txtNewUID.ReadOnly = true; this.btnSave.Visible = false; }
/// <summary> /// 设置控件的状态 /// </summary> /// <param name="Status">true:控件可用,false :控件不可用 /// </param> private void setControlStatus(bool Status) { this.btnSave.Visible = Status; this.btnSaveUpdate.Visible = Status; this.ddlNewType.Enabled = Status; this.txtMemo.ReadOnly = !Status; this.txtNewCPwd.ReadOnly =! Status; this.txtNewCreateP.ReadOnly = !Status; this.txtNewPwd.ReadOnly = !Status; this.txtNewUID.ReadOnly = !Status; this.txtNewCreateD.ReadOnly = !Status; }
#endregion
#region 显示详细信息、编辑更新用户信息 protected void gvUserInfo_RowCommand(object sender, GridViewCommandEventArgs e) { try { if (e.CommandName == "Detail") { this.detailMode(); } //编辑用户信息 if (e.CommandName == "Edit") { //进入编辑模式 this.editMode(); }
UserInfo uInfo = null; UserInfoSearchConds searchConds = new UserInfoSearchConds(); //获取用户ID searchConds.UserId = gvUserInfo.Rows[Convert.ToInt32(e.CommandArgument)].Cells[1].Text.ToString().Trim(); ArrayList infoList = userService.GetUserInfos(searchConds); if (infoList.Count != 0) { uInfo = (UserInfo)infoList[0]; }
this.controlsBind(uInfo); } catch { throw; } }
/// <summary> /// 将得到的信息绑定到界面相应的控件上 /// </summary> /// <param name="uInfo"></param> private void controlsBind(UserInfo uInfo) { this.txtNewUID.Text = uInfo.UserId.Trim(); this.txtNewPwd.Text = uInfo.Pwd.Trim(); this.txtNewCPwd.Text = uInfo.Pwd.Trim(); this.txtNewCreateD.Text = uInfo.CreateDate.Trim(); this.txtNewCreateP.Text = uInfo.CreatePerson.Trim(); this.txtMemo.Text = uInfo.Memo.Trim(); this.ddlNewType.SelectedValue = uInfo.Type.Trim(); } /// <summary> /// 保存编辑 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnSaveUpdate_Click(object sender, EventArgs e) { try { //清除界面上的错误信息 this.clearErrorMsg(); //获取用户输入的数据并封装为对象,是否有现成的方法可用? UserInfo uInfo=this.getNewUserInfo(); //是否进行有效性检查?何种检查?如何设计? if (txtNewPwd.Text == null || txtNewPwd.Text == "" || this.ddlNewType.SelectedValue == null || this.ddlNewType.SelectedValue == "") { this.lblCreateError.Text = "密码和类型为必填字段,请检查是否正确填写!"; } else { //调用BLL层更新用户信息的方法 userService.UpdateUserInfo(uInfo); //进行数据绑定 this.gvDataBind(); //提示用户更新成功 this.lblCreateError.Text = "更新用户信息成功!"; } //更新成功后应该将界面设为何种模式?
} catch { throw; } }
DLL中的代码
namespace DAL.UserLogin{ public class UserLoginDAO { /// <summary> /// 根据用户名和密码查询 /// </summary> private const string SQL_SELECT_USER_LOGIN_INFO = "select * from tblUserInfo where userId='{0}' and pwd='{1}'"; private const string SQL_SELECT_USER_INFO_LIST = "SELECT USERID,PWD,USERTYPE,CREATEDATE,CREATEPERSON,MEMO FROM TBLUSERINFO"; private const string SQL_DELETE_ACCOUNT_INFO = "delete from TBLUSERINFO where userid = '{0}'"; private const string SQL_INSERT_USER_INFO = "insert into tblUserInfo "; private const string SQL_SELECT_USER_TYPE = "select distinct userType from tblUserInfo"; //更新用户的SQL语句 update 表名 set 列名=新值,列名=新值 where userId=要更新的值 private const string SQL_UPDATE_USER_INFO = "update tblUserInfo set ";
/// <summary> /// 按用户名和密码查询用户信息,用于用户登录时,判断用户是否存在 /// </summary> /// <param name="UserId">用户名</param> /// <param name="Pwd">密码</param> /// <returns></returns> public UserInfo SignIn(string UserId, string Pwd) { //处理SQL字符串 string sqlStr = String.Format(SQL_SELECT_USER_LOGIN_INFO, UserId, Pwd);
//定义UserInfo对象 UserInfo loginInfo = null; try { //定义SqlDataReader,并调用DBConnHelper中的方法读取数据 using (SqlDataReader rdr = DBConnHelper.ExecuteReader(DBConnHelper.ConnString, CommandType.Text, sqlStr, null)) { //Read()方法,返回值bool型,如果存在行,则为 true;否则为 false。 if (rdr.Read()) { //调用本类地方法DataMapping,将数据库读取出的数据赋值给UserInfo对象 loginInfo = this.DataMapping(rdr); } } } catch (Exception ex) { throw ex; }
return loginInfo; }
/// <summary> /// 把数据库中取出的数据集转换为数据对象UserInfo /// </summary> /// <param name="rdr"></param> /// <returns></returns> private UserInfo DataMapping(SqlDataReader rdr) { //实例化一个UserInfo对象 UserInfo theUserInfo=new UserInfo();
//将数据库中读出的数据依次赋值给数据对象theUserInfo的属性 theUserInfo.UserId = rdr.GetString(0); theUserInfo.Pwd = rdr.GetString(1); theUserInfo.Type = rdr.GetString(2);
//如果数据库中字段可能为空,需要进行判断 if (rdr.IsDBNull(3)) { //如果数据集中该字段的值不存在,则将对象的值置为空字符串 theUserInfo.CreateDate = ""; } else { theUserInfo.CreateDate = rdr.GetString(3); } if (rdr.IsDBNull(4)) { theUserInfo.CreatePerson = ""; } else { theUserInfo.CreatePerson = rdr.GetString(4); } if (rdr.IsDBNull(5)) { theUserInfo.Memo = ""; b45b } else { theUserInfo.Memo = rdr.GetString(5); } return theUserInfo; }
/// <summary> /// 通过查询条件查询用户信息 /// </summary> /// <param name="conds">查询条件数据对象</param> /// <returns>用户信息列表</returns> public ArrayList GetUserInfoList(UserInfoSearchConds Conds) { try { ArrayList acctList = new ArrayList(); string sqlStr = GetQuerySQL(Conds); //定义UserInfo对象
//定义SqlDataReader,并调用DBConnHelper中的方法读取数据 using (SqlDataReader rdr = DBConnHelper.ExecuteReader(DBConnHelper.ConnString, CommandType.Text, sqlStr, null)) { //Read()方法,返回值bool型,如果存在行,则为 true;否则为 false。 while (rdr.Read()) { //调用本类地方法DataMapping,将数据库读取出的数据赋值给UserInfo对象 UserInfo loginInfo = this.DataMapping(rdr); acctList.Add(loginInfo); } } return acctList;
} catch (Exception ex) { throw ex; } }
/// <summary> /// 动态生成查询条件 /// </summary> /// <param name="queryCond">查询条件数据对象</param> /// <returns>添加了查询条件的SQL语句</returns> private string GetQuerySQL(UserInfoSearchConds queryCond) { StringBuilder sqlBuilder = new StringBuilder(SQL_SELECT_USER_INFO_LIST); sqlBuilder.Append(" where 1=1 "); if (queryCond.UserId != null && queryCond.UserId != "") sqlBuilder.Append(" and USERID like '%" + queryCond.UserId + "%'"); if (queryCond.Type != null && queryCond.Type != "") sqlBuilder.Append(" and UserType = '" + queryCond.Type + "'"); if (queryCond.CreateDate != null && queryCond.CreateDate != "") sqlBuilder.Append(" and CreateDate like '" + queryCond.CreateDate + "%'"); if (queryCond.CreatePerson != null && queryCond.CreatePerson != "") sqlBuilder.Append(" and CreatePerson like '" + queryCond.CreatePerson + "%'"); sqlBuilder.Append(" order by userid"); return sqlBuilder.ToString(); }
/// <summary> /// 通过用户id删除用户信息 /// </summary> /// <param name="acctInfo">UserInfo数据模型</param> public void DeleteUserInfo(string userId) { string sqlDele = String.Format(SQL_DELETE_ACCOUNT_INFO, userId);
using (SqlConnection conn = new SqlConnection(DBConnHelper.ConnString)) { conn.Open(); using (SqlTransaction trans = conn.BeginTransaction()) { try { { DBConnHelper.ExecuteNonQuery(trans, CommandType.Text, sqlDele, null); trans.Commit(); } }
catch (Exception e) { trans.Rollback(); throw e; } } } }
#region 新建用户信息 private string GetInsertSQL(UserInfo uInfo) { StringBuilder sqlInsertBuilder = new StringBuilder(SQL_INSERT_USER_INFO); sqlInsertBuilder.Append(" values('"); if (uInfo.UserId != null && uInfo.UserId != "") sqlInsertBuilder.Append(uInfo.UserId + "','"); else sqlInsertBuilder.Append("','"); if (uInfo.Pwd != null && uInfo.Pwd != "") sqlInsertBuilder.Append(uInfo.Pwd + "','"); else sqlInsertBuilder.Append("','"); if (uInfo.Type != null && uInfo.Type != "") sqlInsertBuilder.Append(uInfo.Type + "','"); else sqlInsertBuilder.Append("','"); if (uInfo.CreateDate != null && uInfo.CreateDate != "") sqlInsertBuilder.Append(uInfo.CreateDate + "','"); else sqlInsertBuilder.Append("','"); if (uInfo.CreatePerson != null && uInfo.CreatePerson != "") sqlInsertBuilder.Append(uInfo.CreatePerson + "','"); else sqlInsertBuilder.Append("','"); if (uInfo.Memo != null && uInfo.Memo != "") sqlInsertBuilder.Append(uInfo.Memo + "'"); else sqlInsertBuilder.Append("'"); sqlInsertBuilder.Append(")"); return sqlInsertBuilder.ToString(); }
/// <summary> /// 插入用户信息 /// </summary> /// <param name="uInfo"></param> public void InsertUserInfo(UserInfo uInfo) { string sqlInsert = this.GetInsertSQL(uInfo);
using (SqlConnection conn = new SqlConnection(DBConnHelper.ConnString)) { conn.Open(); using (SqlTransaction trans = conn.BeginTransaction()) { try { { DBConnHelper.ExecuteNonQuery(trans, CommandType.Text, sqlInsert, null); trans.Commit(); } }
catch { throw; } } } } #endregion
#region 更新用户信息 /// <summary> /// 更新用户信息 /// </summary> /// <param name="uInfo">需要更新的用户信息数据对象</param> public void UpdateUserInfo(UserInfo uInfo) { //生成SQL语句 string sqlUpdate = this.GetUpdateSQL(uInfo); //执行更新操作 using (SqlConnection conn = new SqlConnection(DBConnHelper.ConnString)) { conn.Open(); using (SqlTransaction trans = conn.BeginTransaction()) { try { { DBConnHelper.ExecuteNonQuery(trans, CommandType.Text, sqlUpdate, null); trans.Commit(); } }
catch (Exception e) { trans.Rollback(); throw e; } } } }
/// <summary> /// 生成更新用户的SQL语句 /// </summary> /// <param name="uInfo">需要更新的用户信息数据</param> /// <returns>返回生成的SQL语句</returns> private string GetUpdateSQL(UserInfo uInfo) { StringBuilder sqlBuilder = new StringBuilder(SQL_UPDATE_USER_INFO); sqlBuilder.Append(" UserType = '" + uInfo.Type + "'"); sqlBuilder.Append(" , pwd= '" + uInfo.Pwd + "'"); sqlBuilder.Append(" , CreateDate = '" + uInfo.CreateDate + "'"); sqlBuilder.Append(", CreatePerson= '" + uInfo.CreatePerson + "'"); sqlBuilder.Append(", Memo= '" + uInfo.Memo + "'"); sqlBuilder.Append(" where userid = '" + uInfo.UserId + "'"); return sqlBuilder.ToString(); } #endregion
}}
相关文章推荐
- sql server2005值比较求救各位高手
- 以后就在这里向各位高手学习了,呵呵
- 紧急求救,有点难度,各位快进来看看!!!
- 想請教各位高手一個問題
- 请问各位高手,我出现了一个令我头痛的问题:在HibernateUtil类中创建SessionFactory总是失败:
- 初学C者,望各位高手指点!
- 各位高手帮忙看一下我的电脑配置单,请大虾多提建议,小弟不胜感激!
- 设计的一个计算器类的源代码,很简陋哦,请各位高手不要见笑!
- 请教各位高手,我如何在winxp sp2发送不合法的RAW SOCKET数据包谢谢!
- asp无组件上传(急急)各位asp高手。救救我吧。。
- 请教各位高手问题??着急....(解决了)
- 需要各位高手的幫忙
- 各位高手大师请帮忙
- 各位高手好!
- 开源类库项目构想,欢迎各位高手拍砖~~ [转载]
- 初学JQ,各位菜鸟一起学习吧。高手绕道。谢谢
- 请各位高手帮忙解释两个实物电路
- 求救: 在web开发中的三个层次使用事务之COM+不能使用,请各位指点
- 各位高手帮帮我
- 请教一下各位高手,如何破解XP管理员密码?