444 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			444 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using BLL; | |||
|  | using BLL.ZHGL.Question; | |||
|  | using System; | |||
|  | using System.Collections.Generic; | |||
|  | using System.Data; | |||
|  | using System.Data.SqlClient; | |||
|  | using System.Linq; | |||
|  | 
 | |||
|  | namespace FineUIPro.Web.ZHGL.Question | |||
|  | { | |||
|  |     public partial class QuestionDB : PageBase | |||
|  |     { | |||
|  |         /// <summary> | |||
|  |         /// 加载页面 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void Page_Load(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (!IsPostBack) | |||
|  |             { | |||
|  |                 Funs.DropDownPageSize(this.ddlPageSize); | |||
|  |                 this.GetButtonPower(); | |||
|  |                 this.InitTreeMenu(); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 初始化树 | |||
|  |         /// </summary> | |||
|  |         private void InitTreeMenu() | |||
|  |         { | |||
|  |             tvTestTraining.Nodes.Clear(); | |||
|  |             tvTestTraining.ShowBorder = false; | |||
|  |             tvTestTraining.ShowHeader = false; | |||
|  |             tvTestTraining.EnableIcons = true; | |||
|  |             tvTestTraining.AutoScroll = true; | |||
|  |             tvTestTraining.EnableSingleClickExpand = true; | |||
|  |             TreeNode rootNode = new TreeNode | |||
|  |             { | |||
|  |                 Text = "问题库", | |||
|  |                 NodeID = "0", | |||
|  |                 Expanded = true | |||
|  |             }; | |||
|  |             this.tvTestTraining.Nodes.Add(rootNode); | |||
|  |             BoundTree(rootNode.Nodes, rootNode.NodeID); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void BoundTree(TreeNodeCollection nodes, string parentId) | |||
|  |         { | |||
|  |             var dt = GetNewTraining(parentId); | |||
|  |             if (dt.Count() > 0) | |||
|  |             { | |||
|  |                 TreeNode tn = null; | |||
|  |                 foreach (var dr in dt) | |||
|  |                 { | |||
|  |                     string name = dr.QuestionDBName;                    | |||
|  |                     if (!string.IsNullOrEmpty(dr.QuestionDBCode)) | |||
|  |                     { | |||
|  |                         name = "[" + dr.QuestionDBCode + "]" + dr.QuestionDBName; | |||
|  |                     } | |||
|  |                     tn = new TreeNode | |||
|  |                     { | |||
|  | 
 | |||
|  |                         Text = name, | |||
|  |                         NodeID = dr.QuestionDBId, | |||
|  |                         EnableClickEvent = true, | |||
|  |                         ToolTip = dr.QuestionDBName | |||
|  |                     }; | |||
|  |                     nodes.Add(tn); | |||
|  |                     ///是否存在下级节点 | |||
|  |                     var sup = Funs.DB.Question_QuestionDB.FirstOrDefault(x => x.SupQuestionDBId == tn.NodeID); | |||
|  |                     if (sup != null) | |||
|  |                     { | |||
|  |                         BoundTree(tn.Nodes, tn.NodeID); | |||
|  |                     } | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 得到培训类型 | |||
|  |         /// </summary> | |||
|  |         /// <param name="parentId"></param> | |||
|  |         /// <returns></returns> | |||
|  |         private List<Model.Question_QuestionDB> GetNewTraining(string parentId) | |||
|  |         { | |||
|  |             return (from x in Funs.DB.Question_QuestionDB | |||
|  |                     where x.SupQuestionDBId == parentId | |||
|  |                     orderby x.QuestionDBCode | |||
|  |                     select x).ToList(); | |||
|  |         } | |||
|  | 
 | |||
|  |         //protected void btnNew_Click(object sender, EventArgs e) | |||
|  |         //{ | |||
|  |         //    PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("TrainingSave.aspx", "编辑 - "))); | |||
|  |         //} | |||
|  | 
 | |||
|  | 
 | |||
|  |         protected void btnMenuADD_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (this.tvTestTraining.SelectedNode != null) | |||
|  |             { | |||
|  |                 PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("QuestionDBSave.aspx?SupQuestionDBId={0}", this.tvTestTraining.SelectedNode.NodeID, "新增 - "))); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 ShowNotify("请选择树节点!", MessageBoxIcon.Warning); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         protected void btnTreeMenuEdit_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (this.tvTestTraining.SelectedNode != null) | |||
|  |             { | |||
|  |                 if (this.tvTestTraining.SelectedNode.NodeID != "0")   //非根节点可以编辑 | |||
|  |                 { | |||
|  |                     PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("QuestionDBSave.aspx?QuestionDBId={0}", this.tvTestTraining.SelectedNode.NodeID, "编辑 - "))); | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     ShowNotify("根节点无法编辑!", MessageBoxIcon.Warning); | |||
|  |                 } | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 ShowNotify("请选择树节点!", MessageBoxIcon.Warning); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         protected void btnTreeMenuDelete_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (this.tvTestTraining.SelectedNode != null && this.tvTestTraining.SelectedNodeID != "0") | |||
|  |             { | |||
|  |                 var edu = Funs.DB.Question_QuestionDB.FirstOrDefault(x => x.SupQuestionDBId == this.tvTestTraining.SelectedNode.NodeID); | |||
|  |                 if (edu == null) | |||
|  |                 { | |||
|  |                     QuestionService.DeleteQuestionDBById(this.tvTestTraining.SelectedNode.NodeID); | |||
|  |                     InitTreeMenu(); | |||
|  |                     Grid1.DataSource = null; | |||
|  |                     Grid1.DataBind(); | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     ShowNotify("存在子目录,不能删除!", MessageBoxIcon.Warning); | |||
|  |                 } | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 ShowNotify("请选择删除项!", MessageBoxIcon.Warning); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         protected void tvTestTraining_NodeCommand(object sender, FineUIPro.TreeCommandEventArgs e) | |||
|  |         { | |||
|  |             BindGrid(); | |||
|  |         } | |||
|  | 
 | |||
|  |         #region BindGrid | |||
|  | 
 | |||
|  |         private void BindGrid() | |||
|  |         { | |||
|  |             if (this.tvTestTraining.SelectedNode != null && !string.IsNullOrEmpty(this.tvTestTraining.SelectedNode.NodeID)) | |||
|  |             { | |||
|  |                 string strSql = @"SELECT QuestionDBItemId,QuestionDBId,QuestionDBItemCode,QuestionDBItemName,Abstracts,AttachUrl,VersionNum,TestType " | |||
|  |                                 + @" ,(CASE WHEN TestType = '1' THEN '单选题' WHEN TestType = '2' THEN '多选题' ELSE '判断题' END) AS TestTypeName " | |||
|  |                                 + @" ,AItem,BItem,CItem,DItem,EItem,AnswerItems " | |||
|  |                                 + @" FROM dbo.Question_QuestionDBItem" | |||
|  |                                 + @" WHERE QuestionDBId=@QuestionDBId "; | |||
|  |                 List<SqlParameter> listStr = new List<SqlParameter> | |||
|  |                 { | |||
|  |                     new SqlParameter("@QuestionDBId", this.tvTestTraining.SelectedNode.NodeID) | |||
|  |                 }; | |||
|  |                 if (!string.IsNullOrEmpty(this.txtName.Text.Trim())) | |||
|  |                 { | |||
|  |                     strSql += " AND (QuestionDBItemCode LIKE @Name OR QuestionDBItemName LIKE @Name OR Abstracts LIKE @Name  )"; | |||
|  |                     listStr.Add(new SqlParameter("@Name", "%" + this.txtName.Text.Trim() + "%")); | |||
|  |                 } | |||
|  |                 if (this.drptype.SelectedValue != "0") | |||
|  |                 { | |||
|  |                     strSql += " AND TestType=@TestType"; | |||
|  |                     listStr.Add(new SqlParameter("@TestType", this.drptype.SelectedValue)); | |||
|  |                 } | |||
|  |                 if (this.ckIsItem.Checked) | |||
|  |                 { | |||
|  |                     strSql += " AND (AItem IS NULL OR BItem IS NULL OR AItem ='' OR BItem ='')"; | |||
|  |                 } | |||
|  | 
 | |||
|  |                 SqlParameter[] parameter = listStr.ToArray(); | |||
|  |                 DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); | |||
|  |                 Grid1.RecordCount = tb.Rows.Count;             | |||
|  |                 var table = this.GetPagedDataTable(Grid1, tb); | |||
|  |                 Grid1.DataSource = table; | |||
|  |                 Grid1.DataBind(); | |||
|  |             } | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region Events | |||
|  |         protected void Window1_Close(object sender, EventArgs e) | |||
|  |         { | |||
|  |             this.InitTreeMenu(); | |||
|  |         } | |||
|  | 
 | |||
|  |         protected void Window2_Close(object sender, EventArgs e) | |||
|  |         { | |||
|  |             this.BindGrid(); | |||
|  |         } | |||
|  |         protected void Window3_Close(object sender, EventArgs e) | |||
|  |         { | |||
|  |             this.InitTreeMenu(); | |||
|  |             this.BindGrid(); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 右键删除事件 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void btnMenuDelete_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             this.DeleteData(); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 删除方法 | |||
|  |         /// </summary> | |||
|  |         private void DeleteData() | |||
|  |         { | |||
|  |             if (Grid1.SelectedRowIndexArray.Length > 0) | |||
|  |             { | |||
|  |                 foreach (int rowIndex in Grid1.SelectedRowIndexArray) | |||
|  |                 { | |||
|  |                     string rowID = Grid1.DataKeys[rowIndex][0].ToString(); | |||
|  |                     var getD = BLL.ZHGL.Question.QuestionService.getQuestionDBItemById(rowID); | |||
|  |                     if (getD != null) | |||
|  |                     { | |||
|  |                         BLL.LogService.AddSys_Log(this.CurrUser, getD.QuestionDBItemCode, getD.QuestionDBItemId, BLL.Const.QuestionDBMenuId, BLL.Const.BtnDelete); | |||
|  |                         BLL.ZHGL.Question.QuestionService.DeleteQuestionDBItemById(rowID);                       | |||
|  |                     } | |||
|  |                 } | |||
|  | 
 | |||
|  |                 BindGrid(); | |||
|  |                 ShowNotify("删除数据成功!"); | |||
|  |             } | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region GV排序页面 | |||
|  |         /// <summary> | |||
|  |         ///  | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) | |||
|  |         { | |||
|  |             Grid1.PageIndex = e.NewPageIndex; | |||
|  |             BindGrid(); | |||
|  |         } | |||
|  | 
 | |||
|  |         protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); | |||
|  |             BindGrid(); | |||
|  |         } | |||
|  | 
 | |||
|  |         protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e) | |||
|  |         { | |||
|  |             Grid1.SortDirection = e.SortDirection; | |||
|  |             Grid1.SortField = e.SortField; | |||
|  | 
 | |||
|  |             BindGrid(); | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 编辑试题 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e) | |||
|  |         { | |||
|  |             this.EditData(); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 右键编辑事件 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void btnMenuEdit_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             this.EditData(); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 编辑数据方法 | |||
|  |         /// </summary> | |||
|  |         private void EditData() | |||
|  |         { | |||
|  |             if (Grid1.SelectedRowIndexArray.Length == 0) | |||
|  |             { | |||
|  |                 Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning); | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             string trainingItemId = Grid1.SelectedRowID; | |||
|  | 
 | |||
|  |             PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("QuestionDBItemSave.aspx?QuestionDBItemId={0}", trainingItemId, "编辑 - "))); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         ///  增加 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void btnNewDetail_Click(object sender, EventArgs e) | |||
|  |         {             | |||
|  |             if (this.tvTestTraining.SelectedNode != null) | |||
|  |             { | |||
|  |                 string id = this.tvTestTraining.SelectedNodeID; | |||
|  |                 var questionDB = QuestionService.getQuestionDBById(id); | |||
|  |                 if (questionDB != null && questionDB.IsEndLever == true) | |||
|  |                 { | |||
|  |                     PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("QuestionDBItemSave.aspx?QuestionDBId={0}", this.tvTestTraining.SelectedNode.NodeID, "编辑 - "))); | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     ShowNotify("请选择末级树节点!", MessageBoxIcon.Warning); | |||
|  |                 } | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 ShowNotify("请选择树节点!", MessageBoxIcon.Warning); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         #region 按钮权限 | |||
|  |         /// <summary> | |||
|  |         /// 获取按钮权限 | |||
|  |         /// </summary> | |||
|  |         /// <param name="button"></param> | |||
|  |         /// <returns></returns> | |||
|  |         private void GetButtonPower() | |||
|  |         { | |||
|  |             var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.TestTrainingMenuId); | |||
|  |             if (buttonList.Count() > 0) | |||
|  |             { | |||
|  |                 if (buttonList.Contains(BLL.Const.BtnAdd)) | |||
|  |                 { | |||
|  |                     this.btnMenuADD.Hidden = false; | |||
|  |                     this.btnImport.Hidden = false; | |||
|  |                     this.btnNewDetail.Hidden = false; | |||
|  |                 } | |||
|  |                 if (buttonList.Contains(BLL.Const.BtnModify)) | |||
|  |                 { | |||
|  |                     this.btnTreeMenuEdit.Hidden = false; | |||
|  |                     this.btnMenuEdit.Hidden = false; | |||
|  |                 } | |||
|  |                 if (buttonList.Contains(BLL.Const.BtnDelete)) | |||
|  |                 { | |||
|  |                     this.btnTreeMenuDelete.Hidden = false; | |||
|  |                     this.btnMenuDelete.Hidden = false; | |||
|  |                 } | |||
|  |             } | |||
|  | 
 | |||
|  |             //if (this.CurrUser.UserId == BLL.Const.sysglyId) | |||
|  |             //{ | |||
|  |             //    this.btnRefresh.Hidden = false; | |||
|  |             //    this.btnRefresh1.Hidden = false; | |||
|  |             //} | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 查询 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void TextBox_TextChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             this.BindGrid(); | |||
|  |         } | |||
|  | 
 | |||
|  |         #region 导入 | |||
|  |         /// <summary> | |||
|  |         /// 导入按钮 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void btnImport_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             PageContext.RegisterStartupScript(Window3.GetShowReference(String.Format("QuestionDBItemIn.aspx", "导入 - "))); | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region 导出 | |||
|  |         /// <summary> | |||
|  |         /// 导出按钮 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void btnMenuOut_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             PageContext.RegisterStartupScript(Window3.GetShowReference(String.Format("QuestionDBOut.aspx", "导出 - "))); | |||
|  |         } | |||
|  |         /// <summary> | |||
|  |         /// 导出按钮 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void btnMenuOut1_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (this.tvTestTraining.SelectedNode != null && this.tvTestTraining.SelectedNodeID != "0") | |||
|  |             { | |||
|  |                 Response.ClearContent(); | |||
|  |                 string filename = Funs.GetNewFileName(); | |||
|  |                 Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("问题试题" + filename, System.Text.Encoding.UTF8) + ".xls"); | |||
|  |                 Response.ContentType = "application/excel"; | |||
|  |                 Response.ContentEncoding = System.Text.Encoding.UTF8; | |||
|  |                 this.Grid1.PageSize = Grid1.RecordCount; | |||
|  |                 BindGrid(); | |||
|  |                 Response.Write(GetGridTableHtml(Grid1)); | |||
|  |                 Response.End(); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 ShowNotify("请选择树节点!", MessageBoxIcon.Warning); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         #endregion | |||
|  |            | |||
|  |         /// <summary> | |||
|  |         /// 显示选项不全的题目 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void ckIsItem_CheckedChanged(object sender, CheckedEventArgs e) | |||
|  |         { | |||
|  |             this.BindGrid(); | |||
|  |         } | |||
|  |     } | |||
|  | } |