不能在 DropDownList 中选择多个项

在Asp.net中,如果在对DDL控件时行绑定后,再插入一条新的值。如:

     this.ddlProjectName.DataSource = PCBO.GetProjectList(ps);//传加IList
this.ddlProjectName.DataTextField = "ProjectName";
this.ddlProjectName.DataValueField = "ProjectGuid";
this.ddlProjectName.DataBind();

      this.ddlProjectName.Items.Insert(0,new ListItem("--请选择--",0));

则,在代码解析时,会默认把刚才插入的那条下拉选项设为"已选择"。这时你要想在代码中重新选择默认选择的话,会报错误:不能在 DropDownList 中选择多个项。

 

关键: 加上 DropDownList ddl = new DropDownList ();
                     ddl.ClearSelection();   

加上红色字的方法就行了,这个是.net内置的方法

  所以,此时只能把绑定的数据源转换成DataTable类型,并直接把"--请选择--"加入到DataTable类型中。

 

代码:

表现层代码:

protected void Page_Load(object sender, EventArgs e)
{
//非回传,即第一次进入页面

if (!IsPostBack)
{
//填充项目名称
IList<ProjectStatus> ps = new List<ProjectStatus>();
ps.Add(ProjectStatus.New);//新增状态
ps.Add(ProjectStatus.Permission);//审批状态

this.ddlProjectName.DataSource = PCBO.GetProjectListForSearch(ps);//已更新方法
this.ddlProjectName.DataTextField = "ProjectName";
this.ddlProjectName.DataValueField = "ProjectGuid";
this.ddlProjectName.DataBind();


//填充项目阶段
this.ddlProjectStage.DataSource = SCBO.GetListForSearch("XMJD");
this.ddlProjectStage.DataTextField = "Name";
this.ddlProjectStage.DataValueField = "Guid";
this.ddlProjectStage.DataBind();

//填充问题类型
this.ddlQueType.DataSource = SCBO.GetListForSearch("WTLX");
this.ddlQueType.DataTextField = "Name";
this.ddlQueType.DataValueField = "Guid";
this.ddlQueType.DataBind();


if (Session["JD_Project"] != null && Session["Jd_PStage"] != null && Session["QueTypeId"]!=null)
{
this.ddlProjectName.SelectedValue = Session["JD_Project"].ToString();
this.ddlProjectStage.SelectedValue = Session["Jd_PStage"].ToString();
this.ddlQueType.SelectedValue = Session["QueTypeId"].ToString();

this.gvw_Data.DataSource = RNotice.Search((Guid)Session["JD_Project"], (Guid)Session["Jd_PStage"], (Guid)Session["QueTypeId"]);
this.gvw_Data.DataBind();
}
}

}

 

逻辑层代码:

public DataTable GetProjectListForSearch(IList<ProjectStatus> proStatus)
{
DataTable dt = null;
try
{
IList<PmProject> projectList = GetProjectList(proStatus);//返回IList
dt = new DataTable();
dt.Columns.Add("ProjectName");
dt.Columns.Add("ProjectGuid");

DataRow dr = dt.NewRow();
dr["ProjectName"] = "--请选择--";
dr["ProjectGuid"] = Guid.Empty.ToString();
dt.Rows.InsertAt(dr, 0);

foreach (PmProject pro in projectList)
{
dr = dt.NewRow();
dr["ProjectName"] = pro.ProjectName;
dr["ProjectGuid"] = pro.RowGuid.ToString();
dt.Rows.Add(dr);
}
}
catch (Exception ex)
{
bool rethrow = ExceptionPolicy.HandleException(ex, ExceptionPolicy.BusinessLogicDefaultPolicy);
if (rethrow) throw;
}
return dt;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值