public static void SaveSkTable(List <SKTABLE_07_VIEW> skTable, long kkno) { var courseBriefcase = BriefcaseControl.GetBriefcase(kkno); var skDatatable = EnumerableExtension.ListToDataTable(skTable, "SKTABLE"); courseBriefcase.AddTable(skDatatable); courseBriefcase.WriteBriefcase(); }
/// <summary> /// 把点名表转成list 再转换成Datatable 然后再存. /// </summary> /// <param name="classBriefcase">要存的那门课对应的briefcase</param> /// <param name="dmTable">要保存的点名表</param> public static void SaveDmTable(FileBriefcase classBriefcase, DataTable dmTable) { var listToSave = dmTable.ToList <DMTABLE_08_NOPIC_VIEW>(); // 将Dmtable转成list var datatableToSave = EnumerableExtension.ListToDataTable(listToSave, dmTable.TableName); // 从list再转回来 classBriefcase.AddTable(datatableToSave); //把转完的Datatable放到Briefcase中. classBriefcase.WriteBriefcase(); //保存 }
/// <summary> /// 获取propertiesBriefcase,其中包含该 1.该平板中所有的课程 2.班级表 /// 第一次在哪下载的课程 就得在哪里用.学院之间不能混用. /// 若briefcase不存在 则创建一个briefcase /// </summary> /// <returns></returns> public static FileBriefcase InitPropertiesBriefcase(long collageNo) { if (File.Exists(GlobalParams.BriefcasePath + @"Properties.daBriefcase")) //does properties briefcase exists? { var propertiesBriefcase = new FileBriefcase(GlobalParams.BriefcasePath + @"Properties.daBriefcase", true); //if yes ,return that briefcase(侯晨琛非要让我用英语注释) var fDataModule = new DataModule(); //新建briefcase的时候要下载班级表咯 var bjTable = from c in fDataModule.GetBjTable() //获取数据 where c.XYID == collageNo select c; var bjDataTable = EnumerableExtension.ListToDataTable(bjTable.ToList(), "BJTABLE"); //将班级表转换成datatable propertiesBriefcase.AddTable(bjDataTable); //将班级表添加到briefcase中 propertiesBriefcase.WriteBriefcase(); return(propertiesBriefcase);//返回该briefcase } else { var propertiesBriefcase = new FileBriefcase(GlobalParams.BriefcasePath + @"Properties.daBriefcase"); //如果没有的话 那就新建一个briefcase var courseInfoTable = new DataTable("CourseInfo"); // courseInfoTable.Columns.Add("课程名称", typeof(string)); courseInfoTable.Columns.Add("课程编号", typeof(string)); propertiesBriefcase.AddTable(courseInfoTable); //新建一张表 表中存的是该平板中所有课程的信息 但表是空的. var fDataModule = new DataModule(); //新建briefcase的时候要下载班级表咯 var bjTable = from c in fDataModule.GetBjTable() //获取班级表数据 where c.XYID == collageNo select c; var bjDataTable = EnumerableExtension.ListToDataTable(bjTable.ToList(), "BJTABLE"); //将班级表转换成datatable propertiesBriefcase.AddTable(bjDataTable); //将班级表添加到briefcase中 propertiesBriefcase.WriteBriefcase(); return(propertiesBriefcase);//返回该briefcase } }
/// <summary> /// 改变点名表的一条记录 /// </summary> /// <param name="kkno">开课编号</param> /// <param name="dmTable">引用!!! 点名表</param> /// <param name="studentNo">学生学号</param> /// <param name="status">签到状态</param> /// <param name="dmsj">签到时间</param> /// <param name="rollcallNo">哪一次签到</param> public static void ChangeDmRecord(ref DataTable dmTable, string studentNo, short status, DateTime dmsj, short rollcallNo) { var dmTableList = dmTable.ToList <DMTABLE_08_NOPIC_VIEW> (); var dmRecord = from c in dmTableList where c.XSID == studentNo select c; var index = dmTableList.FindIndex(s => s.XSID == studentNo); if (-1 != index) { dmTableList[index].DKZT = status; switch (rollcallNo) //根据签到次数来指定点名时间 { case 1: { dmTableList[index].DMSJ1 = dmsj; break; } case 2: { dmTableList[index].DMSJ2 = dmsj; break; } case 3: { dmTableList[index].DMSJ3 = dmsj; break; } } dmTable = EnumerableExtension.ListToDataTable(dmTableList, dmTable.TableName); // list转datatable 并这张表带出去. } }
/// <summary> /// 保存上课表 并更新PropertiesBriefcase中的上课状态. /// </summary> /// <param name="kkno"></param> public static void SaveSkTable(long kkno, long skno, SKTABLE_07_VIEW skRecord) { var fDataModule = new DataModule(); var sktable = from c in fDataModule.GetSktable07Viewro() where c.KKNO == kkno select c; // 拉取上课表 var sktableList = sktable.ToList(); var courseBriefcase = BriefcaseControl.GetBriefcase(kkno); var skdatatable = courseBriefcase.FindTable("SKTABLE"); //将上课表转换成datatable var skDatarow = skdatatable.Select(string.Format("SKNO = {0}", skno)); skDatarow.First().BeginEdit(); skDatarow.First()["EDITMANNO"] = skRecord.EDITMANNO; skDatarow.First()["EDITDATE"] = skRecord.EDITDATE; skDatarow.First()["DMFS"] = skRecord.DMFS; skDatarow.First()["CDRS"] = skRecord.CDRS; skDatarow.First()["ZCRS"] = skRecord.ZCRS; skDatarow.First()["ZTRS"] = skRecord.ZTRS; skDatarow.First()["KKRS"] = skRecord.KKRS; skDatarow.First()["SKDATE"] = skRecord.SKDATE; skDatarow.First()["XKDATE"] = skRecord.XKDATE; skDatarow.First().EndEdit(); skdatatable = EnumerableExtension.ListToDataTable(skdatatable.ToList <SKTABLE_07_VIEW> (), "SKTABLE"); courseBriefcase.AddTable(skdatatable); courseBriefcase.WriteBriefcase(); var classInfoTable = OfflineDataControl.GetClassInfoTable(kkno); //var classInfoTable = courseBriefcase.FindTable("ClassInfo"); var classInfoRow = classInfoTable.Select(string.Format("上课编号='{0}'", skno)); classInfoRow.First().BeginEdit(); classInfoRow.First()["上课状态"] = "已签到"; classInfoRow.First().EndEdit(); courseBriefcase.AddTable(classInfoTable); courseBriefcase.WriteBriefcase(); //todo:改PropertiesBriefcase!!!! //foreach (DataRow sktableRow in skdatatable.Rows) { // if ((Int16)sktableRow["SKZT"] == 3) // continue; // var index = sktableList.FindIndex(a => a.SKNO == (long) sktableRow["SKNO"]); // sktableRow.BeginEdit(); // sktableRow[["ZTRS"]] //} //courseBriefcase.AddTable (skdatatable); // 将datatable写入briefcase中 //var ttttt = courseBriefcase.FindTable("SKTABLE"); //courseBriefcase.WriteBriefcase (); // 写入硬盘 ////刷新PropertiesBriefcase //RefreshClassInfoTable(courseBriefcase , sktableList); }
/// <summary> /// 下载课程的过程中比较费时的操作都在这个函数里面 /// </summary> /// <param name="kkno">开课编号</param> /// <param name="courseBriefcase">该堂课要存的briefcase</param> private static void DownloadData(long kkno, Briefcase courseBriefcase) { Thread.Sleep(1000);//等待进度条窗口建立完毕 _waitform.Invoke(new MethodInvoker(() => _waitform.SetInfo("下载学生信息 \n 该过程可能会比较耗时"))); var fDataModule = new DataModule(); // 再新建一个datamodule.. 好浪费资源的说 反正C#会自己做内存回收... var xktable = from c in fDataModule.GetxktableViewros() // 将选课表(学生信息)拿出来 where c.KKNO == kkno select c; _waitform.Invoke(new MethodInvoker(() => _waitform.SetInfo("下载学生信息 \n 该过程会耗时30秒左右"))); // 更改等待窗口的文字 var xkDatatable = EnumerableExtension.ListToDataTable(xktable.ToList(), "XKTABLE"); // 下载选课表 _waitform.Invoke(new MethodInvoker(() => _waitform.SetValue(20))); // 设置进度条 20 courseBriefcase.AddTable(xkDatatable); // 将选课表加到briefcase中 courseBriefcase.WriteBriefcase(); // 写入硬盘 var sktable = from c in fDataModule.GetSktable07Viewro() where c.KKNO == kkno select c; // 拉取上课表 var dmtable = from c in fDataModule.GetdmTable() where c.KKNO == kkno select c; //拉取选课表 _waitform.Invoke(new MethodInvoker(() => _waitform.SetInfo("下载课程信息 \n 该过程不会消耗太长时间"))); _waitform.Invoke(new MethodInvoker(() => _waitform.SetValue(50))); var sktableList = sktable.ToList(); // 下载上课表 var skdatatable = EnumerableExtension.ListToDataTable(sktableList, "SKTABLE"); //将上课表转换成datatable courseBriefcase.AddTable(skdatatable); // 将datatable写入briefcase中 courseBriefcase.WriteBriefcase(); // 写入硬盘 _waitform.Invoke(new MethodInvoker(() => _waitform.SetInfo("下载考勤信息 \n 该过程不会消耗太长时间"))); var dmtableList = dmtable.ToList(); // 下载点名表 foreach (var sktable07Viewro in sktable) { var viewro = sktable07Viewro; // resharper说一定要这么写 var dmtablesinglelist = from c in dmtableList where c.SKNO == viewro.SKNO select c; var dmtableSingleDatatable = EnumerableExtension.ListToDataTable(dmtablesinglelist.ToList(), sktable07Viewro.SKNO.ToString(CultureInfo.InvariantCulture)); // 将list转换成datatable courseBriefcase.AddTable(dmtableSingleDatatable); _waitform.Invoke(new MethodInvoker(() => _waitform.Increase(1))); // 每次下载都在进度条上加1 } courseBriefcase.WriteBriefcase(); // 保存将对briefcase的更改写入硬盘 var classInfoTable = courseBriefcase.FindTable("ClassInfo"); //以下注释的代码作为参考用. //courseInfoTable.Columns.Add ("上课编号", typeof (string)); //courseInfoTable.Columns.Add ("上课日期", typeof (string)); //courseInfoTable.Columns.Add ("上课状态", typeof (string)); foreach (var sktable07Viewro in sktableList) { var viewro = sktable07Viewro; //resharper说要这么写 var classInfoRow = classInfoTable.NewRow(); //新建一行 classInfoRow["上课编号"] = viewro.SKNO.ToString(CultureInfo.InvariantCulture); //指定这一行的上课编号 classInfoRow["上课日期"] = viewro.YDSKDATE.ToString(); //指定这一行的上课日期 if (viewro.SKZT == 0) //将上课状态转换成文字 { classInfoRow["上课状态"] = "未签到"; } else { classInfoRow["上课状态"] = "已签到"; } classInfoTable.Rows.Add(classInfoRow);//将这一行加到datatable里 } courseBriefcase.AddTable(classInfoTable);//将datatable加到briefcase里 courseBriefcase.WriteBriefcase(); _waitform.Invoke(new MethodInvoker(() => _waitform.Close())); //关闭进度窗口 }