关于下拉菜单(dropdownlist)一些用法:
DropDownListWeb控件创建一个包含多个选项的下拉列表,用户可以从中选择一个选项。
1,动态绑定数据(与datatable绑定):
#region 绑定设置dropdownlist的值 /// <summary> /// 绑定设置dropdownlist的值 /// </summary> /// <param name="ddl"></param> /// <param name="dt"></param> private void SetDropDownList(DropDownList ddl, DataTable dt) { //清空原有数据 ddl.Items.Clear(); //判断是否有需要填充的数据,有则填充 if (dt.Rows.Count > 0) { ddl.DataSource = dt;//绑定数据源 ddl.DataValueField = dt.Columns[0].ToString();//绑定数据项Value ddl.DataTextField = dt.Columns[2].ToString();//绑定数据项Text ddl.DataBind();//绑定 } ddl.Items.Add(new ListItem("请选择", ""));//填充请【选择项】 ddl.SelectedIndex = ddl.Items.Count - 1;//选中【请选择】项 } #endregion
若要指定绑定后的数据选定项可使用
DropDownList.Items.FindByText("name").Selected=true或者
DropDownList.Items.FindByValue("code").Selected=true
另外也可从数据库中获得选定项(比如修改信息的时候)
可使用先用数据库填充一个DateSet--ds,然后使用DropDownList.Items.FindByValue/*或者FindByText*/(ds.Tables[0].Rows[0].ItemArray[0].ToString()).Selected=true;
实际应用:
1,从查询页面中点击编辑跳转到编辑页面
2,编辑完成,提示修改成功后,跳转到查询页面的跳转的状态
查询页面:
/// <summary> /// 点击编辑,获取编辑的id, 即须知id /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void lbtnEdit_Click(object sender, EventArgs e) { LinkButton editbtn = (LinkButton)sender; string ExamID = DropExam.SelectedItem.Value; //获取被编辑字典的ID string NoticeID = editbtn.CommandArgument.ToString(); Response.Redirect("ExamNotice.aspx?NoticeID=" + NoticeID + "&ExamID=" + ExamID); //"ModifyExamStudentInformation.aspx?StudentNo=" + parmStr[0] + "&ExamMainID=" + parmStr[1] }
修改页面:
/// <summary> /// 点击修改 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnOK_Click(object sender, EventArgs e) { try { TeaExamInformationBLL teaExamInformationBLL = new TeaExamInformationBLL(); //定义一个考试申请实体类 string NoticeID = Request.QueryString["NoticeID"]; string ExamID = Request.QueryString["ExamID"]; ExamNoticeEntity enExamNotice = new ExamNoticeEntity(); enExamNotice.NoticeID = NoticeID; enExamNotice.Notice = txtContent.Text; enExamNotice.IsNoUse = IsUse.SelectedItem.Text; enExamNotice.NoticeName = txtNoticeName.Text; //enExamNotice.AddUser = "何静媛"; enExamNotice.AddUser = Session["UserName"].ToString(); //enExamNotice.IsNoDefault = IsDefault.SelectedItem.Text; //声明错误枚举 ConfirmInfo flagUpdateExamNotice; //判断如果想要设置默认须知 flagUpdateExamNotice = teaExamInformationBLL.UpdateExamInformation(enExamNotice); if (ConfirmInfo.Success == flagUpdateExamNotice) { Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('修改考试须知信息成功!');</script>"); //修改成功 //Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "location.href='SearchInformation.aspx?ExamID='" + ExamID, true); Response.Redirect("SearchInformation.aspx"); } //代码已经存在 else if (ConfirmInfo.Exists == flagUpdateExamNotice) { Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('修改为默认须知失败!');</script>"); } else { Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('修改考试须知信息失败!');</script>"); } } catch (Exception ex) { MessageBox.Show(this.Page, ex.Message); } }
点击修改,修改成功后,跳转回查询页面:
protected void Page_Load(object sender, EventArgs e) { if (Session["UserNO"] != null) { if (!IsPostBack) { //页面首次加载时给表格绑定数据 BindAllCollege(); //判断学院的下拉框是否为空,即判断session中的学院是否为空 if (Session["SelectedCollegeID"] == null) { BindAllCollege(); } else { //如果学院的session中不为空,则将下拉框加载上数据,并附上选中项 BindAllCollege(); //先清空选中项 DropDep.ClearSelection(); //给下拉框赋上选中项 DropDep.Items.FindByValue(Session["SelectedCollegeID"].ToString()).Selected = true; //DropExamRoom.Items.FindByText(ExamRoom).Selected = true; BindCourseByID(); DropCourse.ClearSelection(); DropCourse.Items.FindByValue(Session["SelectedCourseID"].ToString()).Selected = true; BindExamByCourseID(); DropExam.ClearSelection(); DropExam.Items.FindByValue(Session["SelectedExamID"].ToString()).Selected = true; //定义B层类 TeaExamInformationBLL teaExamInformationBLL = new TeaExamInformationBLL(); //定义一个考试须知实体类 TR_ExamNoticeEntity enExamNoticeRelative = new TR_ExamNoticeEntity(); enExamNoticeRelative.ExamID = DropExam.SelectedItem.Value; enExamNoticeRelative.AddUser = Session["UserName"].ToString(); //enExamNoticeRelative.AddUser = "何静媛"; DataTable dtExamNotice = teaExamInformationBLL.QueryExamInformation(enExamNoticeRelative); if (dtExamNotice.Rows.Count == 0) { //MessageBox.Show(this, "此考试下还未添加考试须知!系统默认应用默认须知"); lblMessage.Text = "此考试下还未添加考试须知!系统默认应用默认须知"; } repExamNotic.DataSource = dtExamNotice; repExamNotic.DataBind(); } } } else { Response.Redirect("../../Student/StuLogin.aspx"); } }
2.查询用法
对于单个下拉菜单查询我一般直接使用SelectedIndexChanged事件,使用这个事件千万别忘记把下拉菜单的AutoPostBack属性设为true!
/// <summary> /// 学院变化时加载课程 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void dropCollege_SelectedIndexChanged(object sender, EventArgs e) { //绑定课程 BindCourseByID(); } #region 绑定学院 /// <summary> /// 绑定学院 /// </summary> private void BindAllCollege() { DataTable dtCollege = new DataTable(); BasicSystemBLL BasicSystemBll = new BasicSystemBLL(); dtCollege = BasicSystemBll.GetAllCollege(); //判断是否有学院 if (dtCollege.Rows.Count == 0) { MessageBox.Show(this, "没有学院,请联系管理员!"); DropDep.Items.Clear(); //dropDepartment.Items.Clear(); DropCourse.Items.Clear(); DropExam.Items.Clear(); //DropExamRoom.Items.Clear(); } else { SetDropDownList(DropDep, dtCollege); DropExam.Items.Clear(); //DropExamRoom.Items.Clear(); } } #endregion
3,添加用法
添加DorpDownList控件的Item子项的三种方法
DropDownList控件的SelectedItem对象表示在执行过程中被选中的Item项
Item项拥有三个属性。其一为Text,其二为Value它们分别表示Item项所显示的文字与所表示的值,如果Value属性没有设置,则默认Value属性值等Text属性,第三个属性Selected则用于判断某Item项是否被选中添加DorpDownList控件的Item子项。
添加DorpDownList控件的Item子项的方法有三种:
第一种:使用<asp:ListItem>方法
<asp:DropDownList id="weste" runat="server"> <asp:ListItem Value="0">小学</asp:ListItem> <asp:ListItem Value="1">中学</asp:ListItem> <asp:ListItem Value="2">大学</asp:ListItem> </asp:DropDownList>
第二种:使用Items属性的Add方法1
DropDownList.Items.Add(ItemText)
Items属性表示DropDownList控件所有Item项的集合,Add操作既是在这个集合中插入新的Item项。第二种方法用于只设定Item项的Text属性(实际上也指定了Value属性,此时Value属性值等于Text属性值)。
第三种:使用Items属性的Add方法2
DropDownListItems.Add(newListItem(ItemText,ItemValue))
第三种方法同时设定了Item项的Text属性与Value属性,它是通过添加一个ListItem类来实现的。ListItem类使用了两个参数,第一个参数表示Text属性值,第二个参数表示Value属性值。
DropDownList要加载之后要按照我们查到的数据显示,这只是一种方式,可能还会有更好的方法,在这里只是提供一种方式,也多方面了解一下DropDownList的用法!