不能在 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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章