private void viewRollCallDetailsBtn_Click(object sender, EventArgs e) { var selectedproperty = (KeyValuePair <long, string>)courseListLbox3.SelectedItem; // 获取已经选择的项目 if (selectedproperty.Key == -1) //判断是否有数据 { return; } var rollCallingDetailRow = this.rollCallingDetailGview3.SelectedRows[0]; var kkno = selectedproperty.Key; var skno = Convert.ToInt64(rollCallingDetailRow.Cells["上课编号"].Value); //验证离线密码 var offlineVerifyResault = BriefcaseControl.VerifyOfflinePasswd(kkno); if (!offlineVerifyResault) { MsgBox.ShowMsgBoxDialog("验证口令失败"); return; } // 如果验证不通过 则提示密码错误 并返回 什么都不做. //显示 View StudentsForm 窗口. var viewStudentForm = new ViewStudentsForm(kkno, skno, false); if (!viewStudentForm.IsDisposed) // 判断该窗口是否已经被释放 { viewStudentForm.ShowDialog(); } }
/// <summary> /// ///上传数据按钮函数 需要做以下几件事 /// 1.验证密码(已经做完) /// 2.传入kkno 显示窗口提示本节课信息 /// 3.传入kkno和skno 显示上课时间 点击确定之后 上传数据. /// 4.提示是否刷新指纹信息 /// 5.传入kkno 刷新指纹信息. /// 其中 上传数据 和 刷新指纹信息需要显示进度条 /// 刷新指纹信息要时间长一些. 建议单独放在线程中去做. /// 所有的事情应该全部在DataUploadControl中. /// 不要传Briefcase要不然打死你 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void uploadDataBtn_Click(object sender, EventArgs e) { var selectedproperty = (KeyValuePair <long, string>)courseListLbox3.SelectedItem; // 获取已经选择的项目 if (selectedproperty.Key == -1) //判断是否有数据 { MsgBox.ShowMsgBoxDialog("没有数据"); } var courseInfo = new CourseInfo(selectedproperty.Key); Settings.Default.UserId = courseInfo.TeacherNo; // 设置登录时的教师编号 var rollCallingDetailRow = this.rollCallingDetailGview3.SelectedRows[0]; var kkno = selectedproperty.Key; var skno = Convert.ToInt64(rollCallingDetailRow.Cells["上课编号"].Value); var skdate = Convert.ToString((rollCallingDetailRow.Cells["上课日期"].Value)); var kkname = Convert.ToString(selectedproperty.Value); //验证离线密码 var offlineVerifyResault = BriefcaseControl.VerifyOfflinePasswd(kkno); if (!offlineVerifyResault) { MsgBox.ShowMsgBoxDialog("验证口令失败"); return; } // 如果验证不通过 则提示密码错误 并返回 什么都不做. //todo:上传数据的业务逻辑在这里编写即可 需要从界面里带出去的东西:1.上课编号2.课程编号 3.预计上课时间 var logonForm = new LogOnForm(); //登录窗口 logonForm.ShowDialog(); // 显示登录窗口 var displayString = DataUploadControl.GenerateConfirmString(kkno, kkname, skno, skdate); var confirmResault = ConfirmBox.ShowConfirmBoxDialog("请确认要上传的课程信息:\n" + displayString); if (confirmResault == DialogResult.Cancel) { return; //如果点击了取消 就取消上传课程. } //todo:在这里写上传数据的业务逻辑 DataUploadControl.UploadOneClass(kkno, skno); MsgBox.ShowMsgBoxDialog(displayString + "\n\n上传完成"); //dp_RefreshMainForm (); dp_BindDataSourceForThirdClassListBox(); //为第三个标签页中的左上角Listbox绑定数据源 }
/// <summary> /// 结束点名按钮函数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void stopRollCallBtn_Click(object sender, EventArgs e) { /***********得到kkno和skno 然后验证离线密码***********/ var selectedproperty = (KeyValuePair <long, string>)coursesListBox1.SelectedItem; // 获取已经选择的项目 if (selectedproperty.Key == -1) //判断是否有数据 { MsgBox.ShowMsgBoxDialog("没有数据"); } var rollCallingDetailRow = classInfoGview1.SelectedRows[0]; var kkno = selectedproperty.Key; var skno = Convert.ToInt64(rollCallingDetailRow.Cells["上课编号"].Value); var ydSkdate = Convert.ToString((rollCallingDetailRow.Cells["上课日期"].Value)); var kkname = Convert.ToString(selectedproperty.Value); //验证离线密码 var offlineVerifyResault = BriefcaseControl.VerifyOfflinePasswd(kkno); if (!offlineVerifyResault) { MsgBox.ShowMsgBoxDialog("验证口令失败"); return; } /***********得到kkno和skno 然后验证离线密码***********/ RollCallControl.SetOneCourseDidNotSubmit(kkno, skno); stopRollCallBtn.Enabled = false; RollCallControl.StopFingerprint(); // 先停指纹仪 dp_ResetMainForm(); // 再重置窗口 dp_DisableRollCallButtons(); //然后把按钮关掉. }
private void manualBtn_Click(object sender, EventArgs e) { /***********得到kkno和skno 然后验证离线密码***********/ var selectedproperty = (KeyValuePair <long, string>)coursesListBox1.SelectedItem; // 获取已经选择的项目 if (selectedproperty.Key == -1) //判断是否有数据 { MsgBox.ShowMsgBoxDialog("没有数据"); } var rollCallingDetailRow = classInfoGview1.SelectedRows[0]; var kkno = selectedproperty.Key; var skno = Convert.ToInt64(rollCallingDetailRow.Cells["上课编号"].Value); var ydSkdate = Convert.ToString((rollCallingDetailRow.Cells["上课日期"].Value)); var kkname = Convert.ToString(selectedproperty.Value); //验证离线密码 var offlineVerifyResault = BriefcaseControl.VerifyOfflinePasswd(kkno); if (!offlineVerifyResault) { MsgBox.ShowMsgBoxDialog("验证口令失败"); return; } /***********得到kkno和skno 然后验证离线密码***********/ RollCallControl.StopFingerprint(); // 初始化完了之后再停指纹仪 new ViewStudentsForm(kkno, skno, true).ShowDialog(); // 手动点名完了之后 copyofstudentlist里面已经存着新的数据了. var showStudentInformationDelegate = new RollCallControl.UpdateUserInterfaceDelegate(ShowStudentInformation); RollCallControl.StartRollCall(RollCallControl.CopyOfStudentList, showStudentInformationDelegate); }
private void radButton1_Click_1(object sender, EventArgs e) { var selectedproperty = (KeyValuePair <long, string>)coursesListBox1.SelectedItem; // 获取已经选择的项目 if (selectedproperty.Key == -1) //判断是否有数据 { MsgBox.ShowMsgBoxDialog("没有数据"); } var rollCallingDetailRow = classInfoGview1.SelectedRows[0]; var kkno = selectedproperty.Key; var skno = Convert.ToInt64(rollCallingDetailRow.Cells["上课编号"].Value); var ydSkdate = Convert.ToString((rollCallingDetailRow.Cells["上课日期"].Value)); var kkname = Convert.ToString(selectedproperty.Value); //验证离线密码 var offlineVerifyResault = BriefcaseControl.VerifyOfflinePasswd(kkno); if (!offlineVerifyResault) { MsgBox.ShowMsgBoxDialog("验证口令失败"); return; } // 如果验证不通过 则提示密码错误 并返回 什么都不做. //todo:指纹点名的业务逻辑在这里编写即可 需要从界面里带出去的东西:1.上课编号2.课程编号 3.实际上课时间 //把预定上课时间传出去 var getRollCallTimeForm = new SetTimeForm(Convert.ToDateTime(ydSkdate)); var getRollCallTimeResault = getRollCallTimeForm.ShowDialog(); // 显示设置时间窗口 if (getRollCallTimeResault == DialogResult.Cancel) // 如果点击了返回 那么就不要再往下走了. { return; } var actualRollCallTime = getRollCallTimeForm.GetActualRollCallTime(); var skrecordList = OfflineDataControl.GetSktable(kkno); // 将来需要把这个拿来更新上课表 //var skrecord = (from c in skrecordList where c.SKNO == skno select c).First (); // linq 完了以后把第一条记录取出来(一共就有一条记录.) //FindIndex(a => a.SKNO == (long) sktableRow["SKNO"]) var skrecordIndex = skrecordList.FindIndex(a => a.SKNO == skno); var skrecord = skrecordList[skrecordIndex]; skrecord.SKZT = 3; skrecord.DMFS = 1; skrecord.SKDATE = actualRollCallTime; OfflineDataControl.SaveSkTable(skrecordList, kkno); // 存上课表 courseNameLbl2.Text = kkname; // 课程名称 label内容 expectedTeachingTimeLbl.Text = ydSkdate; // 预定上课时间 label内容 teacherNameLbl2.Text = teacherNameLbl1.Text; // 教师姓名 label内容 actualTeachingTimeLbl.Text = actualRollCallTime.ToString("f"); //实际上课时间内容 var studentList = RollCallControl.Init(kkno, skno, actualRollCallTime); //对于RollCallControl来说 这个委托是用来更新界面的.具体怎么更新界面他不用管 所以不用改名 var showStudentInformationDelegate = new RollCallControl.UpdateUserInterfaceDelegate(ShowStudentInformation); RollCallControl.StartRollCall(studentList, showStudentInformationDelegate); mainPageView.SelectedPage = startRollCallPage; dp_ResetMainForm(); dp_EnableRollcallButtons(); rollCallStudentListGv.DataSource = RollCallControl.CopyOfStudentList; //todo:接下来要做的事情: //1.打开指纹仪 //2.识别出来的号码拿出来 放到Student List里查 查完了把Student对象扔到界面委托里显示. //3.用while(bool变量)控制结束签到 //4.结束签到的时候直接closeUsb即可 //写一个函数 传入更新界面的Delegate 该函数需要在一个新的线程里编写. }