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();
        }
Пример #2
0
        /// <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();                                                          //保存
        }
Пример #3
0
        /// <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 并这张表带出去.
            }
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
        /// <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()));   //关闭进度窗口
        }