/// <summary> /// 绑定具有数据源的DropDownList /// </summary> /// <param name="ddl">DropDownList的ID</param> /// <param name="dtSource">数据源集合</param> /// <param name="initValue">初始值</param> /// <param name="colValue">值字段名</param> /// <param name="colText">显示字段名</param> private void DDLBind(DropDownList ddl, DataTable dtSource, string initValue, string colValue, string colText) { try { //先清空DropDownList ddl.Items.Clear(); //再绑定DropDownList string tbName = dtSource.TableName; ddl.Items.Add(new ListItem(string.Format("--请选择{0}--", tbName), "0")); for (int i = 0; i < dtSource.Rows.Count; i++) { DataRow dr = dtSource.Rows[i]; string ivalue = SystemDataExtension.GetInt16(dr, colValue).ToString(); string itext = SystemDataExtension.GetString(dr, colText); ddl.Items.Add(new ListItem(itext, ivalue)); //ddl.Items[i].Attributes.Add("style", "background-color:" + GetColor(ivalue)); } //设置DropDownList初始项 if (string.IsNullOrEmpty(initValue)) { initValue = "0"; } ddl.SelectedValue = initValue; //ddl.Attributes.Add("style", "background-color:"+GetColor(initValue)); } catch (Exception ex) { lbErr.Text = ex.ToString(); } }
public static void ComBindDT(DataTable dtSource, ref DataTable dtResult, string queryCol, string computeCol) { if (dtSource != null) { foreach (DataRow dr in dtSource.Rows) { string queryValue = SystemDataExtension.GetString(dr, queryCol); string rowFilter = string.Format("{0} = '{1}'", queryCol, queryValue); DataRow[] drs = dtResult.Select(rowFilter); if (drs.Length > 0) { DataRow drResult = drs[0]; drResult.BeginEdit(); drResult[computeCol] = SystemDataExtension.GetInt32(dr, computeCol) + SystemDataExtension.GetInt32(drResult, computeCol); drResult.EndEdit(); drResult.AcceptChanges(); } else { DataRow drResult = dtResult.Rows.Add(); drResult.BeginEdit(); drResult[queryCol] = SystemDataExtension.GetString(dr, queryCol); drResult[computeCol] = SystemDataExtension.GetInt32(dr, computeCol); drResult.EndEdit(); drResult.AcceptChanges(); } } dtResult.AcceptChanges(); } }
/// <summary> /// 将计划表绑定到计划列表GridView控件 /// </summary> /// <param name="dtPlans">数据源</param> private void BindgvPlans(DataTable dtPlans) { try { DataTable dtActions = (DataTable)ViewState["dtActions"]; //扩展计划表,增加一个字段"Title",保存操作的名称,也是计划的名称 DataTable dtTemp = dtPlans.Copy(); dtTemp.Columns.Add("Title"); foreach (DataRow drTemp in dtTemp.Rows) { int actionId = SystemDataExtension.GetInt16(drTemp, "ActionID"); DataRow drAction = ActionBLL.GetActionByID(actionId, dtActions); drTemp.BeginEdit(); drTemp["Title"] = drAction["Title"]; drTemp.EndEdit(); } dtTemp.AcceptChanges(); //绑定分级计划列表 DataTable dtLPlans = TaskBLL.GetTasksWithLevel(dtTemp, "Title", "ParentID", false); gvPlans.DataSource = dtLPlans; gvPlans.DataBind(); } catch (Exception ex) { lbErr.Text = ex.ToString(); } }
/// <summary> /// 绑定所有项目(即ParentID=0的顶级任务) /// </summary> /// <param name="dtProjects">任务列表</param> private void BindProjects(DataTable dtProjects) { try { int rowsCount = dtProjects.Rows.Count; if (rowsCount > 0 & rowsCount <= 5)//项目数不超过5,用多选框展示 { ddlProjects.Visible = false; rblProjects.Visible = true; rblProjects.Items.Clear(); rblProjects.Items.Add(new ListItem("所有项目", "0")); foreach (DataRow dr in dtProjects.Rows) { ListItem item = new ListItem() { Text = SystemDataExtension.GetString(dr, "Title"), Value = SystemDataExtension.GetString(dr, "TaskID") }; item.Attributes.Add("title", SystemDataExtension.GetString(dr, "Description")); rblProjects.Items.Add(item); } } else//项目数超过5,用下拉列表展示 { ddlProjects.Visible = true; rblProjects.Visible = false; ddlProjects.Items.Clear(); ListItem item0 = new ListItem { Text = "所有项目", Value = "0" }; item0.Attributes.Add("title", "筛选所有项目的任务!"); ddlProjects.Items.Add(new ListItem("所有项目", "0")); foreach (DataRow dr in dtProjects.Rows) { ListItem item = new ListItem() { Text = SystemDataExtension.GetString(dr, "Title"), Value = SystemDataExtension.GetString(dr, "TaskID") }; item.Attributes.Add("title", SystemDataExtension.GetString(dr, "Description")); ddlProjects.Items.Add(item); } } } catch (Exception ex) { lbErr.Text = ex.ToString(); } }
/// <summary> /// 获取指定项目的所有任务集合 /// </summary> /// <param name="projectId">项目ID</param> /// <param name="dtTasks">所有任务</param> /// <param name="parentCol">表的父子关联字段</param> /// <param name="dtReturn">子任务集合表</param> /// <returns></returns> public static void GetTasksByProjectID(long projectId, DataTable dtTasks, ref DataTable dtReturn) { DataRow[] drsTasks = dtTasks.Select(string.Format("{0}={1}", "PID", projectId)); if (drsTasks.Length <= 0) { return; } for (int i = 0; i < drsTasks.Length; i++) { DataRow drTasks = drsTasks[i]; dtReturn.Rows.Add(drTasks.ItemArray); projectId = SystemDataExtension.GetInt32(drTasks, "TaskID"); GetTasksByProjectID(projectId, dtTasks, ref dtReturn); } }
/// <summary> /// 筛选哪些未在计划中的操作 /// </summary> /// <param name="dtPlans"></param> /// <param name="dtActions"></param> /// <returns></returns> private DataTable GetActionsNotInPlan(DataTable dtPlans, DataTable dtActions) { DataTable dtMayPlanActions = dtActions.Copy(); foreach (DataRow drPlan in dtPlans.Rows) { int actionId = SystemDataExtension.GetInt32(drPlan, "ActionID"); if (dtMayPlanActions.Select("ActionID=" + actionId).Length > 0) { DataRow drAction = dtMayPlanActions.Select("ActionID=" + actionId)[0]; dtMayPlanActions.Rows.Remove(drAction); dtMayPlanActions.AcceptChanges(); } } return(dtMayPlanActions); }
public static DataTable GetCorpusByID(long corpusId, string CorpusName, DataTable dtCorpusExtend) { DataSet dsCorpus = FSCDLL.DAL.Corpus.GetCorporaByID(corpusId); DataTable dtCorpus = dsCorpus.Tables[0]; DataTable dtResult = dtCorpus.Copy(); DataRow drCorpus; if (dtResult != null) { if (CorpusName == "NEUAC") { dtResult.Columns["TopicID"].ColumnName = "MajorID"; dtResult.Columns["GenreID"].ColumnName = "JournalID"; dtResult.Columns["LevelID"].ColumnName = "YearID"; dtResult.Columns.Add("Major"); dtResult.Columns.Add("Journal"); dtResult.Columns.Add("Year"); drCorpus = dtResult.Rows[0]; string Ids = SystemDataExtension.GetString(drCorpus, "MajorID"); drCorpus["Major"] = GetTitlesByIDs(dtCorpusExtend, Ids, "Major", ""); Ids = SystemDataExtension.GetString(drCorpus, "JournalID"); drCorpus["Journal"] = GetTitlesByIDs(dtCorpusExtend, Ids, "Journal", ""); Ids = SystemDataExtension.GetString(drCorpus, "YearID"); drCorpus["Year"] = GetTitlesByIDs(dtCorpusExtend, Ids, "Year", ""); dtResult.AcceptChanges(); } else { dtResult.Columns.Add("Topic"); dtResult.Columns.Add("Genre"); dtResult.Columns.Add("Level"); drCorpus = dtResult.Rows[0]; string Ids = SystemDataExtension.GetString(drCorpus, "TopicID"); drCorpus["Topic"] = GetTitlesByIDs(dtCorpusExtend, Ids, "Topic", ";"); Ids = SystemDataExtension.GetString(drCorpus, "GenreID"); drCorpus["Genre"] = GetTitlesByIDs(dtCorpusExtend, Ids, "Genre", ";"); Ids = SystemDataExtension.GetString(drCorpus, "LevelID"); drCorpus["Level"] = GetTitlesByIDs(dtCorpusExtend, Ids, "Level", ";"); dtResult.AcceptChanges(); } } return(dtResult); }
/// <summary> /// 根据计划ID获取计划的类型:(操作)单操作计划、(计划)多操作计划、(已删除)已删除计划、(计划操作)计划的操作 /// </summary> /// <param name="planId">计划ID</param> /// <param name="dtPlans">计划表</param> /// <param name="dtActions">操作表</param> /// <returns></returns> private string GetPlanTypeByPlanID(long planId, DataTable dtPlans, DataTable dtActions) { string planType = ""; DataRow[] drsPlan = dtPlans.Select("PlanID=" + planId); if (drsPlan.Length <= 0) { planType = "已删除"; } else { DataRow drPlan = drsPlan[0]; long actionId = SystemDataExtension.GetInt32(drPlan, "ActionID"); //计划对应的操作ID long parentId = SystemDataExtension.GetInt32(drPlan, "ParentID"); //计划的父级ID,若为0,则为计划,否则为多操作计划关联的某一个操作 if (parentId == 0) { DataRow[] drsActions = dtActions.Select("ActionID=" + actionId); if (drsActions.Length > 0) { DataRow drAction = drsActions[0]; int typeId = SystemDataExtension.GetInt16(drAction, "ItemTypeID"); if (typeId != 0) { //获取元数据集合 DataSet dsMetaData = MetaDataDAL.GetGroupMetaData(); ViewState["dsMetaData"] = dsMetaData; DataTable dtActionType = MetaDataBLL.GetMetaDataByGroup("Action", dsMetaData); DataRow[] drsActionType = dtActionType.Select("ItemID=" + typeId); if (drsActionType.Length > 0) { planType = SystemDataExtension.GetString(drsActionType[0], "Title"); } } } } else { planType = "计划操作"; } } return(planType); }
/// <summary> /// 多操作计划的已选择操作的列表的行绑定 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void GvActions_RowDataBound(object sender, GridViewRowEventArgs e) { try { if (e.Row.RowType == DataControlRowType.DataRow) { if (((HiddenField)e.Row.FindControl("hdfActionID")) != null) { //确定计划名称 HiddenField hdfActionID = (HiddenField)e.Row.FindControl("hdfActionID"); if (hdfActionID.Value != "") { string actionId = hdfActionID.Value; Label lbAction = (Label)e.Row.FindControl("lbAction"); DataTable dtActions = (DataTable)ViewState["dtActions"]; DataRow[] drs = dtActions.Select("ActionID =" + int.Parse(actionId)); if (drs.Length > 0) { lbAction.Text = SystemDataExtension.GetString(drs[0], "Title"); } else { lbAction.Text = "未找到操作!"; } } } if (((Label)e.Row.FindControl("lbPercent")) != null) { Label lbPercent = (Label)e.Row.FindControl("lbPercent"); lbPercent.Text = lbPercent.Text + "%"; } e.Row.Attributes.Add("onmouseover", "if(this!=prevselitem){this.style.backgroundColor='#E6F2FB'}"); //当鼠标停留时更改背景色 e.Row.Attributes.Add("onmouseout", "if(this!=prevselitem){this.style.backgroundColor='#ffffff'}"); //当鼠标移开时还原背景色 e.Row.Attributes.Add("onclick", e.Row.ClientID + ".checked=true;selectx(this)"); } } catch (Exception ex) { lbErr.Text = ex.ToString(); } }
/// <summary> /// 获取指定任务的所属项目ID /// </summary> /// <param name="taskId">指定任务ID</param> /// <param name="dtTasks">所有任务</param> /// <param name="drProject">返回的项目行</param> /// <param name="keyCol">表的筛选字段</param> /// <param name="parentCol">表的父子关联字段</param> /// <returns></returns> public static void GetProjectByTaskID(long taskId, DataTable dtTasks, ref DataRow drProject) { DataRow[] drsTasks = dtTasks.Select(string.Format("{0}={1}", "TaskID", taskId)); if (drsTasks.Length <= 0) { return; } DataRow drTasks = drsTasks[0]; drProject = drTasks; taskId = SystemDataExtension.GetInt32(drTasks, "PID"); if (taskId == 0) { return; } else { GetProjectByTaskID(taskId, dtTasks, ref drProject); } }
/// <summary> /// 绑定多操作计划的多选框,并将计划已选择的操作条目设置选中 /// </summary> /// <param name="actionId">操作ID</param> /// <param name="planId">计划ID</param> /// <param name="dtPlans">计划表</param> /// <param name="dtActions">操作表</param> private void BindPlanActions(long actionId, long planId, DataTable dtPlans, DataTable dtActions) { DataTable dtRelations = (DataTable)ViewState["dtRelations"]; int relationId = 2; DataRow[] drSysActions = dtRelations.Select(string.Format("ItemID={0} and RelationID ={1}", actionId, relationId)); if (drSysActions.Length > 0) { cblPlanActions.Items.Clear(); foreach (DataRow dr in drSysActions) { long sysactionId = SystemDataExtension.GetInt32(dr, "RelateditemID"); ListItem item = new ListItem { Value = sysactionId.ToString(), Text = SystemDataExtension.GetString(dtActions.Select("ActionID=" + sysactionId)[0], "Title") }; cblPlanActions.Items.Add(item); } if (planId != 0)//有计划ID传入,表示这是编辑多操作计划,此时需要查询该计划对应的操作哪些已选中 { DataRow[] drMyActions = dtPlans.Select("ParentID=" + planId); if (drMyActions.Length > 0) { string selectedValue = ""; var builder = new StringBuilder(); builder.Append(selectedValue); foreach (DataRow dr in drMyActions) { builder.Append(SystemDataExtension.GetInt32(dr, "ActionID") + ";"); } selectedValue = builder.ToString(); SetCBListChecked(cblPlanActions, selectedValue, ";"); } } } }
/// <summary> /// 根据计划类型设置计划的备选数据列表 /// </summary> /// <param name="planType">计划类型</param> /// <param name="initValue">选择初始值</param> private void BindActions(string planType, string initValue) { try { hdfPlanType.Value = planType; DataSet dsMetaData = (DataSet)ViewState["dsMetaData"]; DataTable dtActionType = MetaDataBLL.GetMetaDataByGroup("Action", dsMetaData); DataRow[] drsActionType = dtActionType.Select(string.Format("Title='{0}'", planType)); ddlPlanAction.Items.Clear(); ddlPlanAction.Items.Add(new ListItem("--请选择计划--", "0")); if (drsActionType.Length > 0) { int typeId = SystemDataExtension.GetInt16(drsActionType[0], "ItemID"); DataTable dtActions = (DataTable)ViewState["dtActions"]; DataRow[] drActions = dtActions.Select("ItemTypeID=" + typeId); if (drActions.Length > 0) { foreach (DataRow dr in drActions) { ListItem item = new ListItem { Value = SystemDataExtension.GetInt32(dr, "ActionID").ToString(), Text = SystemDataExtension.GetString(dr, "Title") }; ddlPlanAction.Items.Add(item); } ddlPlanAction.SelectedValue = initValue; } } } catch (Exception ex) { lbErr.Text = ex.ToString(); } }
/// <summary> /// 根据当前用户ID,获取操作设置数据 /// </summary> /// <param name="myActions">我的操作设置表</param> /// <param name="sysActions">系统操作表</param> /// <param name="dsMetaData">元数据常量表数据集</param> /// <param name="dsActionStruct">Action表结构数据集</param> /// <param name="userId">当前用户ID</param> /// <param name="dsMyActionStruct">User_Action表结构数据集</param> /// <returns></returns> private DataTable GetBindData(int userId, DataSet myActions, DataSet sysActions, DataSet dsMetaData, DataSet dsActionStruct, DataSet dsMyActionStruct) { DataTable dt = InitSouceTable(); try { DataTable dtMyActions = myActions.Tables[0]; //int myCount = dtMyActions.Rows.Count; DataTable dtSysActions = sysActions.Tables[0]; int sysCount = dtSysActions.Rows.Count; for (int i = 0; i < sysCount; i++) { DataRow dr = dt.NewRow(); DataRow drSys = dtSysActions.Rows[i]; int actionId = SystemDataExtension.GetInt32(drSys, "ActionID"); DataRow[] drsMy = dtMyActions.Select("ActionID=" + actionId); dr["ActionID"] = actionId; dr["Title"] = drSys["Title"]; string[] myflds = new string[] { "MinDuring", "MaxDuring", "NormalDuring", "FrequencyID", "ShiDuanID", "Healthy", "Interaction", "Description", "Probability" }; if (drsMy.Length > 0)//该操作已有个性化设置 { DataRow drMy = drsMy[0]; dr["IsMy"] = 1; for (int k = 0; k < myflds.Length; k++) { string fldName = myflds[k]; dr[fldName] = drMy[fldName]; } } else { dr["IsMy"] = 0; for (int k = 0; k < myflds.Length; k++) { string fldName = myflds[k]; dr[fldName] = null; } } dr["Url"] = string.Format("{0}?uid={1}&aid={2}", webObj.ActionDetailsUrl, userId, actionId); //系统设置 //系统的操作频度设置 string fldValue = SystemDataExtension.GetString(drSys, "FrequencyID"); dr["SysFrequencyID"] = GetToolTip(dsMetaData, dsActionStruct, "Frequency", fldValue, 1); //系统的操作时段设置 fldValue = SystemDataExtension.GetString(drSys, "ShiDuanID"); dr["SysShiduanID"] = GetToolTip(dsMetaData, dsActionStruct, "ShiDuan", fldValue, 1); //系统健康相关度设置 fldValue = SystemDataExtension.GetString(drSys, "Healthy"); dr["SysHealthy"] = GetToolTip(dsMetaData, dsActionStruct, "Healthy", fldValue, 0); //系统的互动值相关度设置 fldValue = SystemDataExtension.GetString(drSys, "Interaction"); dr["SysInteraction"] = GetToolTip(dsMetaData, dsActionStruct, "Interaction", fldValue, 0); //系统的使用概率的设置 fldValue = SystemDataExtension.GetString(drSys, "Probability"); dr["SysProbability"] = GetToolTip(dsMetaData, dsActionStruct, "Probability", fldValue, 0); //系统的操作说明的设置 fldValue = SystemDataExtension.GetString(drSys, "Description"); dr["SysDescription"] = GetToolTip(dsMetaData, dsActionStruct, "Description", fldValue, 0); string jiliang = "时长计量单位:分钟" + Environment.NewLine; fldValue = SystemDataExtension.GetString(drSys, "Measurement"); if (fldValue != string.Empty) { jiliang += string.Format("数量计量方式:{0}{1}", fldValue, Environment.NewLine); } fldValue = SystemDataExtension.GetString(drSys, "MUnits"); if (fldValue != string.Empty) { jiliang += string.Format("数量计量单位:{0}{1}", fldValue, Environment.NewLine); } DataRow[] drs = dsMyActionStruct.Tables[0].Select("字段名='MinDuring'"); if (drs.Length > 0) { dr["SysMinDuring"] = SystemDataExtension.GetString(drs[0], "说明") + Environment.NewLine + jiliang; } drs = dsMyActionStruct.Tables[0].Select("字段名='MaxDuring'"); if (drs.Length > 0) { dr["SysMaxDuring"] = SystemDataExtension.GetString(drs[0], "说明") + Environment.NewLine + jiliang; } drs = dsMyActionStruct.Tables[0].Select("字段名='NormalDuring'"); if (drs.Length > 0) { dr["SysNormalDuring"] = SystemDataExtension.GetString(drs[0], "说明") + Environment.NewLine + jiliang; } dt.Rows.Add(dr); } } catch (Exception) { dt = null; throw; } return(dt); }
/// <summary> /// 计划列表行命令事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void GvPlans_RowCommand(object sender, GridViewCommandEventArgs e) { try { if (e.CommandName == "DelPlan") { long planId = long.Parse(e.CommandArgument.ToString()); DeletePlanByPlanID(planId); } else if (e.CommandName == "EditPlan") { lbErr.Text = ""; #region 修改计划 lbPTitle.Text = "修改计划"; string planId = e.CommandArgument.ToString(); hdfID.Value = planId; hdfParentID.Value = "0"; DataTable dt = (DataTable)ViewState["dtPlans"]; DataTable dtPlans = dt.Copy(); DataRow dr = dtPlans.Select("PlanID=" + long.Parse(planId))[0]; long actionId = SystemDataExtension.GetInt32(dr, "ActionID"); //开始日期 tbStart.Text = SystemDataExtension.GetDateTime(dr, "StartDate").ToShortDateString(); //截止日期 tbDue.Text = SystemDataExtension.GetDateTime(dr, "DueDate").ToShortDateString(); //时长目标 tbDuring.Text = SystemDataExtension.GetString(dr, "During"); //数量目标 tbQuantity.Text = SystemDataExtension.GetString(dr, "Quantity"); //描述 tbDesc.Text = SystemDataExtension.GetString(dr, "Description"); DataTable dtActions = (DataTable)ViewState["dtActions"]; string planType = GetPlanTypeByPlanID(long.Parse(planId), dtPlans, dtActions); hdfPlanType.Value = planType; BindActions(planType, actionId.ToString()); if (planType == "计划")//是包含多个操作的计划 { lbPlanActions.Visible = true; cblPlanActions.Visible = true; //btnSetAction.Visible = true; BindPlanActions(actionId, long.Parse(planId), dtPlans, dtActions); } else { lbPlanActions.Visible = false; cblPlanActions.Visible = false; //btnSetAction.Visible = false; } //计划标题,不可更改 ddlPlanAction.Enabled = false; divList.Visible = false; divPlan.Visible = true; divAction.Visible = false; #endregion } } catch (Exception ex) { lbErr.Text = ex.ToString(); } }
/// <summary> /// 任务列表行命令:删除、修改、添加 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void gvTasks_RowCommand(object sender, GridViewCommandEventArgs e) { try { if (e.CommandName == "DelTask") { long taskId = long.Parse(e.CommandArgument.ToString()); DeleteTaskByTaskID(taskId); } else if (e.CommandName == "EditTask") { #region 编辑任务 string taskId = e.CommandArgument.ToString(); hdfID.Value = taskId; DataTable dt = (DataTable)ViewState["dtTasks"]; DataTable dtTasks = dt.Copy(); DataRow dr = dtTasks.Select("TaskID=" + long.Parse(taskId))[0]; string tTitle = SystemDataExtension.GetString(dr, "Title"); //标题 tbTitle.Text = tTitle; //英文标题 tbTitle_EN.Text = SystemDataExtension.GetString(dr, "Title_en"); //开始日期 tbStart.Text = SystemDataExtension.GetString(dr, "StartDate"); //截止日期 tbDue.Text = SystemDataExtension.GetString(dr, "DueDate"); //预估工作量 tbDuring.Text = SystemDataExtension.GetString(dr, "During"); //百分比 tbPercent.Text = SystemDataExtension.GetString(dr, "PercentComplete"); //描述 tbDesc.Text = SystemDataExtension.GetString(dr, "Description"); //状态 int tStatus = SystemDataExtension.GetInt16(dr, "Status"); ddlStatus.SelectedValue = tStatus.ToString(); long parentId = SystemDataExtension.GetInt32(dr, "PID"); hdfPID.Value = parentId.ToString(); if (parentId == 0)//当前任务就是一个项目 { lbPTitle.Text = "编辑项目"; lbTitle.Text = "项目名称:"; lbTitle_EN.Visible = true; lbTitle_ENValid.Visible = true; tbTitle_EN.Visible = true; lbDesc.Text = "项目描述:"; lbParentTitle.Visible = false; lbParent.Visible = false; ddlParent.Visible = false; lbStatus.Text = "项目状态:"; tbDesc.Rows = 5; } else { lbTitle_EN.Visible = false; lbTitle_ENValid.Visible = false; tbTitle_EN.Visible = false; lbTitle.Text = "任务名称:"; DataRow drProject = dr; TaskBLL.GetProjectByTaskID(parentId, dtTasks, ref drProject); lbPTitle.Text = "编辑任务"; lbDesc.Text = "任务描述:"; lbStatus.Text = "任务状态:"; lbParent.Visible = true; ddlParent.Visible = true; DataRow drParentTask = dtTasks.Select("TaskID=" + parentId)[0]; lbParentTitle.Visible = true; lbParentTitle.Text = string.Format("所属项目:{0};父级任务:{1}", SystemDataExtension.GetString(drProject, "Title"), SystemDataExtension.GetString(drParentTask, "Title")); //父级任务列表:dtTasks除去当前任务dr以及其下级任务,其他任务均可作为父级任务使用 dtTasks.Rows.Remove(dr); dtTasks.AcceptChanges(); dtTasks.TableName = "父级任务"; long projectId = SystemDataExtension.GetInt32(drProject, "TaskID"); DataTable dtReturn = dtTasks.Clone(); DataRow[] drPrarents = dtTasks.Select("TaskID=" + projectId); if (drPrarents.Length > 0) { dtReturn.Rows.Add(drPrarents[0].ItemArray); } TaskBLL.GetTasksByProjectID(projectId, dtTasks, ref dtReturn); DataTable dtLTasks = TaskBLL.GetTasksWithLevel(dtReturn, "Title", "PID", false); dtLTasks.TableName = "父级任务"; DDLBind(ddlParent, dtLTasks, parentId.ToString(), "ID", "Title"); ddlParent.Enabled = true; tbDesc.Rows = 3; } divList.Visible = false; divModify.Visible = true; #endregion } else//添加子任务 { lbTitle_EN.Visible = false; lbTitle_ENValid.Visible = false; tbTitle_EN.Visible = false; #region 添加任务 string taskId = e.CommandArgument.ToString(); DataTable dt = (DataTable)ViewState["dtTasks"]; DataTable dtTasks = dt.Copy(); hdfID.Value = "0"; lbTitle.Text = "任务名称:"; tbTitle.Text = ""; tbTitle_EN.Text = ""; tbStart.Text = ""; tbDue.Text = ""; tbDuring.Text = ""; tbPercent.Text = ""; lbDesc.Text = "任务描述:"; tbDesc.Text = ""; tbDesc.Rows = 3; lbPTitle.Text = "添加任务"; //父级任务处理,在新增子任务时,确认了父级任务就不可更改了 hdfPID.Value = taskId; DataRow drProject = dtTasks.Select("TaskID=" + taskId)[0]; TaskBLL.GetProjectByTaskID(long.Parse(taskId), dtTasks, ref drProject); DataRow drParentTask = dtTasks.Select("TaskID=" + taskId)[0]; lbParentTitle.Visible = true; lbParentTitle.Text = string.Format("所属项目:{0};父级任务:{1}", SystemDataExtension.GetString(drProject, "Title"), SystemDataExtension.GetString(drParentTask, "Title")); lbParent.Visible = false; ddlParent.Visible = false; //ddlParent.Enabled = true; //dtTasks.TableName = "父级任务"; //DataTable dtLTasks = TaskBLL.GetTasksWithLevel(dtTasks,"Title","PID", false); //dtLTasks.TableName = "分级任务"; //DDLBind(ddlParent, dtLTasks, taskId, "ID", "Title"); //ddlParent.Enabled = false; lbStatus.Text = "任务状态:"; ddlStatus.SelectedValue = "0"; divList.Visible = false; divModify.Visible = true; #endregion } } catch (Exception ex) { lbErr.Text = ex.ToString(); } }
/// <summary> /// 任务列表行绑定 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void gvTasks_RowDataBound(object sender, GridViewRowEventArgs e) { if (((Label)e.Row.FindControl("lbStatus")) != null) { DataSet dsMetaData = MetaDataDAL.GetGroupMetaData(); DataTable dtStatus = MetaDataBLL.GetMetaDataByGroup("ProjectTask_Status", dsMetaData); dtStatus.TableName = "任务状态表"; Label lbStatus = (Label)e.Row.FindControl("lbStatus"); string initValue = ((HiddenField)e.Row.FindControl("hdfStatus")).Value; if (string.IsNullOrEmpty(initValue)) { initValue = "0"; } DataRow[] drs = dtStatus.Select("ItemID=" + int.Parse(initValue)); if (drs.Length > 0) { DataRow dr = drs[0]; lbStatus.Text = SystemDataExtension.GetString(dr, "Title"); } } if (e.Row.RowType == DataControlRowType.DataRow) { if (((Label)e.Row.FindControl("lbPercent")) != null) { Label lbPercent = (Label)e.Row.FindControl("lbPercent"); string value = lbPercent.Text; if (!value.Contains("%")) { lbPercent.Text = value + "%"; } value = value.TrimEnd('%'); int percent = 0; if (!string.IsNullOrEmpty(value)) { percent = int.TryParse(value, out percent) ? percent : 0;; } string htmlColor = GetColorByPercent(percent); lbPercent.ForeColor = ColorTranslator.FromHtml(htmlColor); //e.Row.Style.Add(HtmlTextWriterStyle.BackgroundColor, GetColorByPercent(percent)); } if (((Label)e.Row.FindControl("lbTitle")) != null)//标题标签 { Label lbTitle = (Label)e.Row.FindControl("lbTitle"); string tTtitle = lbTitle.Text; int titleLength = webObj.TitleLength; int blankCount = tTtitle.Length - tTtitle.TrimStart().Length; if (tTtitle.Length > titleLength + blankCount) //标题内容大于20个 { lbTitle.Text = tTtitle.Substring(0, titleLength + blankCount) + "..."; //截取20个显示,其他用“...”号代替 } lbTitle.ToolTip = tTtitle; //鼠标放上去显示全部信息 } if (((Label)e.Row.FindControl("lbDescription")) != null) //标题标签 { Label lbDescription = (Label)e.Row.FindControl("lbDescription"); string tDesc = lbDescription.Text; int titleLength = webObj.TitleLength; if (tDesc.Length > titleLength * 2) //标题内容大于20个 { lbDescription.Text = tDesc.Substring(0, titleLength * 2) + "..."; //截取2*webObj.TitleLength个字符,其他用“...”号代替 } lbDescription.ToolTip = tDesc; //鼠标放上去显示全部信息 } string taskId = DataBinder.Eval(e.Row.DataItem, "ID").ToString(); DataTable dtDoc = TaskDAL.GetDocsByTaskID(long.Parse(taskId)).Tables[0]; if (dtDoc.Rows.Count > 0) { DataRow dr = dtDoc.Rows[0]; string docLink = SystemDataExtension.GetString(dr, "DocLink"); HyperLink lnkDoc = (HyperLink)e.Row.FindControl("lnkDoc"); if (!string.IsNullOrEmpty(docLink)) { lnkDoc.NavigateUrl = docLink; lnkDoc.Target = "_blank"; lnkDoc.ToolTip = "点击查看并编辑项目/任务文档"; lnkDoc.ImageUrl = "../../../../_layouts/15/VSProject/images/Docs.png"; lnkDoc.ImageHeight = 20; } else { lnkDoc.Enabled = false; } } e.Row.Attributes.Add("onmouseover", "if(this!=prevselitem){this.style.backgroundColor='#E6F2FB'}"); //当鼠标停留时更改背景色 e.Row.Attributes.Add("onmouseout", "if(this!=prevselitem){this.style.backgroundColor='#ffffff'}"); //当鼠标移开时还原背景色 e.Row.Attributes.Add("onclick", e.Row.ClientID + ".checked=true;selectx(this)"); } int userId = VSDLL.Common.Users.UserID; if (userId == 0)//未登录,隐藏任务管理按钮列 { e.Row.Cells[8].Visible = false; } else { e.Row.Cells[8].Visible = true; //HiddenField hdfParentID = (HiddenField)e.Row.FindControl("hdfParentID"); //if (string.IsNullOrEmpty(hdfParentID.Value)|| hdfParentID.Value=="0") //{ // LinkButton lnkDel = (LinkButton)e.Row.FindControl("lnkDel"); // lnkDel.OnClientClick = "return confirm('这是一个项目,删除后将同时删除项目下级的所有的任务,确定仍要删除吗?')"; //} } }
/// <summary> /// 控件初始化方法 /// </summary> private void fvBind() { try { string account = VSDLL.Common.Users.GetLoginAccount; if (account != "") { DataTable dtLocations = UserDAL.GetLocation().Tables[0]; ViewState["dtLocations"] = dtLocations; DataSet ds = UserDAL.GetUserByAccount(account); if (ds.Tables[0].Rows.Count == 0) { DataTable dtTmp = ds.Tables[0].Copy(); dtTmp.Rows.Add(dtTmp.NewRow()); dtTmp.Rows[0]["Account"] = account; ViewState["dtUser"] = dtTmp; lbAccount.Text = account; BindDDL(ddlDegree, UserDAL.GetDegree(), 0); BindDDL(ddlProfession, UserDAL.GetProfession(), 0); BindDDL(ddlIndustry, UserDAL.GetIndustry(), 0); DataSet dsLocation = UserBLL.GetLocationsByParentID(dtLocations, 0); BindDDL(ddlSheng, dsLocation, 0); } else { DataRow dr = ds.Tables[0].Rows[0]; ViewState["dtUser"] = ds.Tables[0].Copy(); lbAccount.Text = SystemDataExtension.GetString(dr, "Account"); tbName.Text = SystemDataExtension.GetString(dr, "Name"); tbIDCard.Text = SystemDataExtension.GetString(dr, "IDCard"); tbTelephone.Text = SystemDataExtension.GetString(dr, "Telephone"); tbEmail.Text = SystemDataExtension.GetString(dr, "Email"); tbDescription.Text = SystemDataExtension.GetString(dr, "Description"); rblistSex.SelectedValue = SystemDataExtension.GetBool(dr, "Sex")?"1":"0"; DateTime?birth = SystemDataExtension.GetNullDateTime(dr, "Birthday"); tbBirthday.Text = birth != null?birth.Value.ToShortDateString() : ""; int initValue = SystemDataExtension.GetInt16(dr, "DegreeID"); BindDDL(ddlDegree, UserDAL.GetDegree(), initValue); initValue = SystemDataExtension.GetInt16(dr, "ProfessionID"); BindDDL(ddlProfession, UserDAL.GetProfession(), initValue); initValue = SystemDataExtension.GetInt16(dr, "IndustryID"); BindDDL(ddlIndustry, UserDAL.GetIndustry(), initValue); initValue = SystemDataExtension.GetInt16(dr, "LocationID");//县级ID int parentId = 0; if (initValue == 0) { DataSet dsLocation = UserBLL.GetLocationsByParentID(dtLocations, 0); BindDDL(ddlSheng, dsLocation, 0); } else { DataSet dsXian = UserBLL.GetParentLocationsByID(dtLocations, initValue, ref parentId); BindDDL(ddlXian, dsXian, initValue); initValue = parentId; DataSet dsShi = UserBLL.GetParentLocationsByID(dtLocations, initValue, ref parentId); BindDDL(ddlShi, dsShi, initValue); initValue = parentId; DataSet dsSheng = UserBLL.GetParentLocationsByID(dtLocations, initValue, ref parentId); BindDDL(ddlSheng, dsSheng, initValue); } } } } catch (Exception ex) { lbErr.Text = ex.ToString(); } }
/// <summary> /// 修改指定ID的计划 /// </summary> /// <param name="planId">计划ID</param> /// <param name="dtPlans">计划表</param> /// <param name="userId">用户ID</param> /// <returns></returns> private long EditPlan(string planId, DataTable dtPlans, int userId) { long newPlanId = 0; try { #region 修改计划 DataRow dr = dtPlans.Select("PlanID=" + long.Parse(planId))[0]; dr.BeginEdit(); //计划开始日期 if (!string.IsNullOrEmpty(tbStart.Text.Trim())) { dr["StartDate"] = Convert.ToDateTime(tbStart.Text.Trim()); } //计划截止日期 if (!string.IsNullOrEmpty(tbDue.Text.Trim())) { dr["DueDate"] = Convert.ToDateTime(tbDue.Text.Trim()); } //时长目标 if (!string.IsNullOrEmpty(tbDuring.Text.Trim())) { int during = int.Parse(tbDuring.Text.Trim()); dr["During"] = during; } //数量目标 if (!string.IsNullOrEmpty(tbQuantity.Text.Trim())) { float quantity = float.Parse(tbQuantity.Text.Trim()); dr["Quantity"] = quantity; } //计划简介 if (!string.IsNullOrEmpty(tbDesc.Text.Trim())) { dr["Description"] = tbDesc.Text.Trim(); } dr["Modified"] = DateTime.Now; dr["ModifiedBy"] = userId; dr.EndEdit(); TaskDAL.UpdatePlans(null, dr); dtPlans.AcceptChanges(); //对多操作的处理 DataTable dtActions = (DataTable)ViewState["dtActions"]; string planType = GetPlanTypeByPlanID(long.Parse(planId), dtPlans, dtActions); if (planType == "计划") { List <string> aIds = new List <string>(); DataRow[] drsPlanActions = dtPlans.Select("ParentID=" + long.Parse(planId)); for (int i = 0; i < drsPlanActions.Length; i++) { aIds.Add(SystemDataExtension.GetInt16(drsPlanActions[i], "ActionID").ToString()); } for (int i = 0; i < cblPlanActions.Items.Count; i++) { if (cblPlanActions.Items[i].Selected && !aIds.Contains(cblPlanActions.Items[i].Value))//此次选中的是原来没有的,则新增 { string selectedAId = cblPlanActions.Items[i].Value; DataRow drNew = dtPlans.NewRow(); drNew["UserID"] = userId; drNew["ActionID"] = int.Parse(selectedAId); drNew["Created"] = DateTime.Now; drNew["CreatedBy"] = userId; drNew["Modified"] = DateTime.Now; drNew["ModifiedBy"] = userId; drNew["ParentID"] = long.Parse(planId); drNew["FLag"] = 1; long newActionId = TaskDAL.InsertPlans(null, drNew); dtPlans.Rows.Add(drNew); dtPlans.AcceptChanges(); } else if (!cblPlanActions.Items[i].Selected && aIds.Contains(cblPlanActions.Items[i].Value))//此次未选中,但原来已选择,则删除 { string selectedAId = cblPlanActions.Items[i].Value; DataRow drOld = dtPlans.Select(string.Format("ActionID={0} and ParentID={1}", int.Parse(selectedAId), long.Parse(planId)))[0]; dtPlans.Rows.Remove(drOld); dtPlans.AcceptChanges(); drOld.BeginEdit(); drOld["Flag"] = 0; drOld["Modified"] = DateTime.Now; drOld["ModifiedBy"] = userId; drOld.EndEdit(); TaskDAL.UpdatePlans(null, drOld); } } } ViewState["dtPlans"] = dtPlans; newPlanId = long.Parse(planId); #endregion } catch (Exception ex) { newPlanId = 0; lbErr.Text = ex.ToString(); } return(newPlanId); }