public void RemoveClassItem(int index) // index就是order { LayoutControl layoutControl = this.Controls["layoutControl1"] as LayoutControl; LayoutControlItem layoutControlItem = layoutControl.Items.FindByName("classItemLayoutItem" + index) as LayoutControlItem; UserControls.ClassItem itemToRemove = layoutControlItem.Control as UserControls.ClassItem; // 调整后面内容的位置 for (int i = index + 1; i < this.itemCount; i++) //后面逐个向上移动 { LayoutControlItem followLayoutItem = layoutControl.Items.FindByName("classItemLayoutItem" + i) as LayoutControlItem; UserControls.ClassItem followerClassItem = followLayoutItem.Control as UserControls.ClassItem; this.MoveUp(followerClassItem); } // 1.移除用户控件 itemToRemove.Dispose(); // 2. 移除layoutitem this.layoutControlGroup2.Remove(layoutControlItem); // 3. 移除行 this.layoutControlGroup2.OptionsTableLayoutGroup.RemoveRowAt(itemCount); // 移除最后一行 this.itemCount--; }
public void Switch(UserControls.ClassItem upperOne, UserControls.ClassItem lowerOne) { //1.找到装这俩控件的LayoutItem LayoutControl layoutControl = this.Controls["layoutControl1"] as LayoutControl; LayoutControlItem layoutControlItemUpperOne = layoutControl.Items.FindByName("classItemLayoutItem" + upperOne.Order) as LayoutControlItem; LayoutControlItem layoutControlItemLowerOne = layoutControl.Items.FindByName("classItemLayoutItem" + lowerOne.Order) as LayoutControlItem; //2.交换 //int temp = lowerOne.Order; //lowerOne.Order = upperOne.Order; //upperOne.Order = temp; upperOne.Order++; lowerOne.Order--; //temp = layoutControlItemUpperOne.OptionsTableLayoutItem.RowIndex; //layoutControlItemUpperOne.OptionsTableLayoutItem.RowIndex = layoutControlItemLowerOne.OptionsTableLayoutItem.RowIndex; //layoutControlItemLowerOne.OptionsTableLayoutItem.RowIndex = temp; layoutControlItemUpperOne.OptionsTableLayoutItem.RowIndex++; layoutControlItemLowerOne.OptionsTableLayoutItem.RowIndex--; //3.名字也要改,避免以后找不到 upperOne.Name = "classItem" + upperOne.Order; lowerOne.Name = "classItem" + lowerOne.Order; layoutControlItemUpperOne.Name = "classItemLayoutItem" + upperOne.Order; layoutControlItemLowerOne.Name = "classItemLayoutItem" + lowerOne.Order; }
public void MoveDown(UserControls.ClassItem itemToMove) { // MoveUp实际上是与它下面的交换位置 if (itemToMove.Order == this.itemCount - 1) //已经是最下面一个了 { return; } // 1.找到他下面一个 LayoutControl layoutControl = this.Controls["layoutControl1"] as LayoutControl; LayoutControlItem layoutControlItemUpperOne = layoutControl.Items.FindByName("classItemLayoutItem" + (itemToMove.Order + 1)) as LayoutControlItem; UserControls.ClassItem itemLower = layoutControlItemUpperOne.Control as UserControls.ClassItem; // 2.交换 this.Switch(itemToMove, itemLower); }
public void MoveUp(UserControls.ClassItem itemToMove) { // MoveUp实际上是与它上面的交换位置 if (itemToMove.Order == 0) //已经是最上面一个了 { return; } // 1.找到他上面一个 LayoutControl layoutControl = this.Controls["layoutControl1"] as LayoutControl; LayoutControlItem layoutControlItemUpperOne = layoutControl.Items.FindByName("classItemLayoutItem" + (itemToMove.Order - 1)) as LayoutControlItem; UserControls.ClassItem itemUpper = layoutControlItemUpperOne.Control as UserControls.ClassItem; // 2.交换 this.Switch(itemUpper, itemToMove); }
private void btnAddClass_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (this.classTypes == null || this.classTypes.Count == 0) // 没有待添加的班级类型就什么都不做 { return; } UserControls.ClassItem item = new UserControls.ClassItem(); item.Name = "classItem" + this.itemCount; item.Order = this.itemCount; // 设置待添加的班级类型 item.ClassTypes = this.classTypes; item.BindClassType(); //this.classTypes.RemoveAt(0); //从头开始添加 // 计算起始排名,简单起见,从上一个的结束开始 //item.StartScore = this.itemCount + 1;//不要贱嗖嗖的替别人做事 RowDefinition row = this.layoutControlGroup2.OptionsTableLayoutGroup.AddRow(); row.SizeType = SizeType.Absolute; row.Height = 30; //row.SizeType = SizeType.AutoSize; LayoutControlItem i = this.layoutControlGroup2.AddItem(); i.Name = "classItemLayoutItem" + this.itemCount; i.Control = item; i.ContentVertAlignment = DevExpress.Utils.VertAlignment.Top; i.OptionsTableLayoutItem.ColumnIndex = 0; i.OptionsTableLayoutItem.RowIndex = this.itemCount + 1; // 第0行显示提示文本 i.OptionsTableLayoutItem.ColumnSpan = 4; this.itemCount++; }
private void btnAutoAssign_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (XtraMessageBox.Show("自动分班需要数分钟时间,并将清空原有分班信息。是否继续?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } // 清空原有分班信息 this.btnClear_ItemClick(sender, null); // 待分班的学生 List <Model.Student> students = this.repoStudent.GetList(); // 按总分排序 students.Sort((x, y) => - x.zcj.CompareTo(y.zcj)); // 分班方式 int autoAssignType; switch (this.cbAutoAssignType.EditValue.ToString()) { case "平行": autoAssignType = 0; break; case "蛇形": autoAssignType = 1; break; case "随机": autoAssignType = 2; break; default: autoAssignType = 1; break; } // 创建好的班级 LayoutControl layoutControl = this.Controls["layoutControl1"] as LayoutControl; int classCount = 1; int scienceStudentIndex = 0; int liberalArtsStudentIndex = 0; for (int i = 0; i < this.itemCount; i++) { // 获得控件 LayoutControlItem layoutControlItem = layoutControl.Items.FindByName("classItemLayoutItem" + i) as LayoutControlItem; UserControls.ClassItem item = layoutControlItem.Control as UserControls.ClassItem; // 建立该类型下所有班级 for (int j = 0; j < item.ClassNum; j++) { Model.Class cls = new Model.Class(); cls.ClassName = "高中" + DateTime.Today.Year.ToString() + "级(" + classCount + ")班"; cls.ClassTypeId = item.ClassTypeId; cls.Grade = DateTime.Today.Year.ToString(); // 班主任信息需要在班级管理中设置 // 班级先入库,否则没有班级ID this.repoClass.Add(cls); classCount++; } // 自动分该类型的班 List <Model.Student> stu; if (item.IsLiberalArts == 1) { stu = students.Where(x => x.sfwk == 1).ToList(); int totalStudent = item.StudentNumPerClass * item.ClassNum; int startIdx = liberalArtsStudentIndex; int endIdx = startIdx + totalStudent - 1; stu = stu.Skip(startIdx).ToList().Take(totalStudent).ToList(); List <Model.Class> classes = this.repoClass.GetList(predicate: "ClassTypeId=" + item.ClassTypeId + " and Grade='" + DateTime.Now.Year.ToString() + "'"); this.repoStudentClass.AutoAssign(stu, classes, autoAssignType); liberalArtsStudentIndex = endIdx + 1; } else { stu = students.Where(x => x.sfwk == 0).ToList(); int totalStudent = item.StudentNumPerClass * item.ClassNum; int startIdx = scienceStudentIndex; int endIdx = startIdx + totalStudent - 1; stu = stu.Skip(startIdx).ToList().Take(totalStudent).ToList(); List <Model.Class> classes = this.repoClass.GetList(predicate: "ClassTypeId=" + item.ClassTypeId + " and Grade='" + DateTime.Now.Year.ToString() + "'"); this.repoStudentClass.AutoAssign(stu, classes, autoAssignType); scienceStudentIndex = endIdx + 1; } } XtraMessageBox.Show("自动分班完成。\n 请前往“班级管理”完善班级其它信息。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // 分完了,查询出来 this.BindStudentClass(); }