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