625 lines
21 KiB
C#
625 lines
21 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Web;
|
||
using System.Web.UI;
|
||
using System.Web.UI.WebControls;
|
||
using Telerik.Web.UI;
|
||
|
||
namespace VRS.Management.VSAT
|
||
{
|
||
public partial class ExamTheoryBase_Add_Custom : BasePage
|
||
{
|
||
DataService.BLL.pro_exam_batch bll = new DataService.BLL.pro_exam_batch();
|
||
|
||
DataService.BLL.admin_log log = new DataService.BLL.admin_log();
|
||
DataService.BLL.admin_user bll_user = new DataService.BLL.admin_user();
|
||
DataService.BLL.pro_theory_base bll_theory_base = new DataService.BLL.pro_theory_base();
|
||
|
||
DataService.BLL.pro_theory_base_item bll_theory_base_item = new DataService.BLL.pro_theory_base_item();
|
||
protected override void Page_Load(object sender, EventArgs e)
|
||
{
|
||
base.Page_Load(sender, e);
|
||
if (!IsPostBack)
|
||
{
|
||
//var user = DataService.BLL.admin_user.load_login();
|
||
//var user_login = bll_user.GetModel(user.user_id);
|
||
|
||
|
||
//DataLoad();
|
||
|
||
BindDeviceType("TheoryBaseKnow", dp_know, "");
|
||
|
||
}
|
||
}
|
||
|
||
public void DataLoad()
|
||
{
|
||
var list = bll_theory_base.GetModelList("").ToList();
|
||
|
||
RadListBoxDestination.DataSource = list;
|
||
RadListBoxDestination.DataValueField = "id";
|
||
RadListBoxDestination.DataTextField = "question";
|
||
RadListBoxDestination.DataSortField = "question";
|
||
RadListBoxDestination.DataBind();
|
||
}
|
||
|
||
protected void RadListBoxDestination_Reordered(object sender, RadListBoxEventArgs e)
|
||
{
|
||
RadListBoxDestination.DataBind();
|
||
ReorderAZ();
|
||
}
|
||
|
||
protected void RadListBoxDestination_Deleted(object sender, RadListBoxEventArgs e)
|
||
{
|
||
span_name.InnerHtml = "";
|
||
RadListBoxDestination.DataBind();
|
||
ReorderAZ();
|
||
}
|
||
|
||
protected void RadListBoxDestination_Deleting(object sender, RadListBoxDeletingEventArgs e)
|
||
{
|
||
if (RadListBoxDestination.Items.Count <= 2)
|
||
{
|
||
span_name.InnerHtml = "至少有两个选项!";
|
||
e.Cancel = true;
|
||
}
|
||
|
||
}
|
||
|
||
//添加单个选项
|
||
protected void btnAddItem_Click(object sender, EventArgs e)
|
||
{
|
||
/*
|
||
var item = new RadListBoxItem();
|
||
item.Text = txt_additem.Text.Trim();
|
||
var addItem = new RadListBoxItem(item.Text, item.Text);
|
||
RadListBoxDestination.Items.Add(addItem);
|
||
|
||
var added_index = addItem.Index;
|
||
|
||
RadioButtonList radbuttonlist = addItem.FindControl("RadioButtonList_Answer") as RadioButtonList;
|
||
if (null != radbuttonlist)
|
||
{
|
||
radbuttonlist.SelectedValue = RadioButtonList_answer.SelectedValue;
|
||
}
|
||
*/
|
||
|
||
var kind = dp_kind.SelectedValue;
|
||
if (string.IsNullOrEmpty(kind))
|
||
{
|
||
span_name.InnerHtml = "题目类型不能为空!";
|
||
return;
|
||
}
|
||
if (kind == "简答题" || kind == "填空题")
|
||
{
|
||
span_name.InnerHtml = "该题目类型不能添加选项!";
|
||
return;
|
||
}
|
||
if (kind == "判断题")
|
||
{
|
||
if (RadListBoxDestination.Items.Count >= 2)
|
||
{
|
||
span_name.InnerHtml = "判断题只有两个选项!";
|
||
return;
|
||
}
|
||
}
|
||
else if (kind == "单选题")
|
||
{
|
||
|
||
}
|
||
else if (kind == "多选题")
|
||
{
|
||
|
||
}
|
||
|
||
span_name.InnerHtml = "";
|
||
|
||
AddNewItem();
|
||
RadListBoxDestination.DataBind();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 更新选项值
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void option_name_TextChanged(object sender, EventArgs e)
|
||
{
|
||
var txtBox = sender as RadTextBox;
|
||
var rad_item = txtBox.Parent as RadListBoxItem;
|
||
if (null != rad_item)
|
||
{
|
||
rad_item.Text = txtBox.Text.Trim();
|
||
}
|
||
}
|
||
|
||
protected void btnSure_Click(object sender, EventArgs e)
|
||
{
|
||
btnSure.Enabled = false;
|
||
DataService.Model.pro_theory_base model = new DataService.Model.pro_theory_base();
|
||
var user = DataService.BLL.admin_user.load_login();
|
||
if (string.IsNullOrEmpty(dp_kind.SelectedValue))
|
||
{
|
||
RadAjaxManager1.Alert("题目类型不能为空!");
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(question_name.Text.Trim()))
|
||
{
|
||
RadAjaxManager1.Alert("题干不能为空!");
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(dp_know.SelectedValue))
|
||
{
|
||
RadAjaxManager1.Alert("知识领域不能为空!");
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
|
||
int right_count = 0;
|
||
var questionTK = question_name.Text.Trim();
|
||
var answerTK = answer_write.Text.Trim();
|
||
List<string> list_answer = new List<string>();
|
||
|
||
if (dp_kind.SelectedValue != "简答题" && dp_kind.SelectedValue != "填空题")
|
||
{
|
||
var flag = ExamTheoryBase_Edit_Custom.CheckRightAnswerCount(RadListBoxDestination, ref right_count, list_answer);
|
||
if (!flag)
|
||
{
|
||
RadAjaxManager1.Alert("选项值不能为空!");
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
}
|
||
|
||
var total_count = RadListBoxDestination.Items.Count;
|
||
//判断题、单选题、多选题
|
||
if (dp_kind.SelectedValue == "判断题")
|
||
{
|
||
if (total_count != 2)
|
||
{
|
||
RadAjaxManager1.Alert("判断题只有两个选项!");
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
if (right_count != 1)
|
||
{
|
||
RadAjaxManager1.Alert("判断题只有1个选项答案!");
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
}
|
||
else if (dp_kind.SelectedValue == "单选题")
|
||
{
|
||
if (total_count < 2)
|
||
{
|
||
RadAjaxManager1.Alert("单选题至少两个选项!");
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
if (right_count != 1)
|
||
{
|
||
RadAjaxManager1.Alert("单选题只有1个选项答案!");
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
}
|
||
else if (dp_kind.SelectedValue == "多选题")
|
||
{
|
||
if (total_count < 2)
|
||
{
|
||
RadAjaxManager1.Alert("多选题至少两个选项!");
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
if (right_count < 2)
|
||
{
|
||
RadAjaxManager1.Alert("多选题至少2个选项答案!");
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
}
|
||
else if (dp_kind.SelectedValue == "简答题")
|
||
{
|
||
var answer = answer_write.Text.Trim();
|
||
if (string.IsNullOrEmpty(answer))
|
||
{
|
||
RadAjaxManager1.Alert("简答题答案不能为空!");
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
}
|
||
else if (dp_kind.SelectedValue == "填空题")
|
||
{
|
||
var answer = answer_write.Text.Trim();
|
||
if (string.IsNullOrEmpty(answer))
|
||
{
|
||
RadAjaxManager1.Alert("填空题答案不能为空!");
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
|
||
var line2 = "__";
|
||
|
||
questionTK = questionTK.Replace("__________", line2)
|
||
.Replace("_________", line2)
|
||
.Replace("________", line2)
|
||
.Replace("_______", line2)
|
||
.Replace("______", line2)
|
||
.Replace("_____", line2)
|
||
.Replace("____", line2)
|
||
.Replace("___", line2);
|
||
// var question_array = question.Split(new string[] { line2 }, StringSplitOptions.RemoveEmptyEntries);
|
||
var question_count = CountSubstringOccurrences(questionTK, line2);
|
||
|
||
|
||
answerTK = answerTK.Replace("__________", line2)
|
||
.Replace("_________", line2)
|
||
.Replace("________", line2)
|
||
.Replace("_______", line2)
|
||
.Replace("______", line2)
|
||
.Replace("_____", line2)
|
||
.Replace("____", line2)
|
||
.Replace("___", line2);
|
||
var answer_array = answerTK.Split(new string[] { line2 }, StringSplitOptions.None);
|
||
|
||
if (question_count != answer_array.Length)
|
||
{
|
||
RadAjaxManager1.Alert(string.Format("填空题空格数:{0} ,与答案数:{1} 不一致!", question_count, answer_array.Length));
|
||
btnSure.Enabled = true;
|
||
return;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
var id = BasePage.GetId();
|
||
model.id = id;
|
||
|
||
model.target = dp_know.SelectedValue;
|
||
model.kind = dp_kind.SelectedValue;
|
||
model.question = question_name.Text.Trim();
|
||
model.create_time = DateTime.Now;
|
||
model.create_by = user.user_id;
|
||
//model.r1 = r1.Text.Trim();//备注
|
||
if (dp_kind.SelectedValue == "填空题")
|
||
{
|
||
model.question = questionTK;
|
||
model.answer = answerTK;
|
||
}
|
||
else if (dp_kind.SelectedValue == "简答题")
|
||
{
|
||
model.answer = answer_write.Text.Trim();
|
||
|
||
}
|
||
else //其它题型
|
||
{
|
||
model.answer = string.Join(",", list_answer);
|
||
}
|
||
|
||
|
||
int index = 1;
|
||
var now = DateTime.Now;
|
||
Dictionary<int, string> dic = new Dictionary<int, string>();
|
||
string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||
var length = alphabet.Length;
|
||
for (int i = 0; i < 26; i++)
|
||
{
|
||
dic.Add(i, alphabet.Substring(i, 1));
|
||
}
|
||
|
||
if (bll_theory_base.Add(model))
|
||
{
|
||
log.write_log("添加题目成功。" + "名称:" + model.question + ",id:" + model.id);
|
||
|
||
for (int i = 0; i < RadListBoxDestination.Items.Count; i++)
|
||
{
|
||
var list_item = RadListBoxDestination.Items[i];
|
||
var item = new DataService.Model.pro_theory_base_item();
|
||
item.id = BasePage.GetNextId(id, index++);
|
||
item.theory_base_id = id;
|
||
item.no = (i + 1);
|
||
if (dic.ContainsKey(i))
|
||
{
|
||
item.item_letter = dic[i];
|
||
}
|
||
item.create_by = user.user_id;
|
||
item.create_time = now;
|
||
item.item = list_item.Text;
|
||
RadTextBox box = list_item.FindControl("option_name") as RadTextBox;
|
||
if (null != box)
|
||
{
|
||
|
||
}
|
||
|
||
RadioButtonList radbuttonlist = list_item.FindControl("RadioButtonList_Answer") as RadioButtonList;
|
||
if (null != radbuttonlist)
|
||
{
|
||
item.is_answer = int.Parse(radbuttonlist.SelectedValue);
|
||
}
|
||
|
||
bll_theory_base_item.Add(item);
|
||
}
|
||
RadAjaxManager1.ResponseScripts.Add("alert('添加题目成功!');CloseAndRebind();");
|
||
}
|
||
else
|
||
{
|
||
RadAjaxManager1.Alert("添加题目失败!");
|
||
btnSure.Enabled = true;
|
||
}
|
||
}
|
||
|
||
public static int CountSubstringOccurrences(string str, string substr)
|
||
{
|
||
int index = 0;
|
||
int count = 0;
|
||
while ((index = str.IndexOf(substr, index)) != -1)
|
||
{
|
||
count++;
|
||
index += substr.Length;
|
||
}
|
||
return count;
|
||
}
|
||
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 旧有添加
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void btnSure_Click_old(object sender, EventArgs e)
|
||
{
|
||
|
||
DataService.Model.pro_theory_base model = new DataService.Model.pro_theory_base();
|
||
var user = DataService.BLL.admin_user.load_login();
|
||
if (string.IsNullOrEmpty(dp_kind.SelectedValue))
|
||
{
|
||
RadAjaxManager1.Alert("题目类型不能为空!");
|
||
return;
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(question_name.Text.Trim()))
|
||
{
|
||
RadAjaxManager1.Alert("题干不能为空!");
|
||
return;
|
||
}
|
||
|
||
|
||
if (dp_kind.SelectedValue == "简答题")
|
||
{
|
||
if (string.IsNullOrEmpty(anwser_jianda.Text.Trim()))
|
||
{
|
||
RadAjaxManager1.Alert("简答题答案不能为空!");
|
||
return;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (dp_answer.CheckedItems.Count <= 0)
|
||
{
|
||
RadAjaxManager1.Alert("请选择答案!");
|
||
return;
|
||
}
|
||
}
|
||
|
||
|
||
model.id = BasePage.GetId();
|
||
model.kind = dp_kind.SelectedValue;
|
||
model.question = question_name.Text.Trim();
|
||
|
||
|
||
model.create_time = DateTime.Now;
|
||
model.create_by = user.user_id;
|
||
model.r1 = r1.Text.Trim();
|
||
|
||
if (dp_kind.SelectedValue == "简答题")
|
||
{
|
||
model.answer = anwser_jianda.Text.Trim();
|
||
model.option_a = "";
|
||
model.option_b = "";
|
||
|
||
}
|
||
else
|
||
{
|
||
var array = dp_answer.CheckedItems.Select(s => s.Text).OrderBy(s => s).ToArray();
|
||
model.answer = string.Join(",", array);
|
||
model.option_a = option_a.Text.Trim();
|
||
model.option_b = option_b.Text.Trim();
|
||
|
||
}
|
||
|
||
if (bll_theory_base.Add(model))
|
||
{
|
||
log.write_log("添加题目成功。" + "名称:" + model.question + ",id:" + model.id);
|
||
RadAjaxManager1.ResponseScripts.Add("alert('添加成功!');CloseAndRebind();");
|
||
}
|
||
else
|
||
{
|
||
RadAjaxManager1.Alert("添加失败!");
|
||
}
|
||
}
|
||
|
||
|
||
protected void btnRowEdit_Click(object sender, EventArgs e)
|
||
{
|
||
var item = sender as LinkButton;
|
||
var rad_item = item.Parent as RadListBoxItem; //item
|
||
//var rad_list = item.Parent.Parent; //radlist
|
||
var text = rad_item.Text;
|
||
var value = rad_item.Value;
|
||
|
||
var txtbox = rad_item.FindControl("option_name") as RadTextBox;
|
||
if (txtbox.Text != text)
|
||
{
|
||
rad_item.Text = txtbox.Text.Trim();
|
||
}
|
||
}
|
||
|
||
protected void dp_kind_SelectedIndexChanged(object sender, DropDownListEventArgs e)
|
||
{
|
||
var kind = dp_kind.SelectedValue;
|
||
if (kind == "单选题" || kind == "多选题")
|
||
{
|
||
//tr_items.Visible = true;
|
||
//tr_answer.Visible = false;
|
||
//hid_add.Value = "0";
|
||
btnAddItem.Visible = true;
|
||
answer_write.Text = "";
|
||
answer_write.Enabled = false;
|
||
if (RadListBoxDestination.Items.Count <= 3)
|
||
{
|
||
RadListBoxDestination.Items.Clear();
|
||
AddNewItem();
|
||
AddNewItem();
|
||
AddNewItem();
|
||
AddNewItem();
|
||
RadListBoxDestination.DataBind();
|
||
}
|
||
}
|
||
else if (kind == "判断题")
|
||
{
|
||
|
||
//tr_items.Visible = true;
|
||
//tr_answer.Visible = false;
|
||
//hid_add.Value = "0";
|
||
btnAddItem.Visible = true;
|
||
|
||
answer_write.Text = "";
|
||
answer_write.Enabled = false;
|
||
RadListBoxDestination.Items.Clear();
|
||
//AddNewItem();
|
||
//AddNewItem();
|
||
AddNewItem("正确");
|
||
AddNewItem("错误");
|
||
|
||
RadListBoxDestination.DataBind();
|
||
}
|
||
else
|
||
{
|
||
// tr_items.Visible = false;
|
||
// tr_answer.Visible = true;
|
||
//hid_add.Value = "1";
|
||
btnAddItem.Visible = false;
|
||
|
||
answer_write.Enabled = true;
|
||
RadListBoxDestination.Items.Clear();
|
||
RadListBoxDestination.DataBind();
|
||
}
|
||
|
||
|
||
|
||
span_name.InnerHtml = "";
|
||
}
|
||
|
||
public void AddNewItem(string text = "")
|
||
{
|
||
Dictionary<int, string> dic = new Dictionary<int, string>();
|
||
string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||
var length = alphabet.Length;
|
||
for (int i = 0; i < 26; i++)
|
||
{
|
||
dic.Add(i, alphabet.Substring(i, 1));
|
||
}
|
||
var item = new RadListBoxItem();
|
||
// item.Text = txt_additem.Text.Trim(); //$$$$
|
||
if (!string.IsNullOrEmpty(text))
|
||
{
|
||
item.Text = text;
|
||
}
|
||
else
|
||
{
|
||
item.Text = txt_additem.Text.Trim();
|
||
}
|
||
var addItem = new RadListBoxItem(item.Text, item.Text);
|
||
RadListBoxDestination.Items.Add(addItem);
|
||
|
||
var added_index = addItem.Index;
|
||
|
||
Label labelAZ = addItem.FindControl("labelAZ") as Label;
|
||
if (null != labelAZ)
|
||
{
|
||
if (dic.ContainsKey(added_index))
|
||
{
|
||
labelAZ.Text = dic[added_index];
|
||
}
|
||
}
|
||
}
|
||
|
||
public void ReorderAZ()
|
||
{
|
||
Dictionary<int, string> dic = new Dictionary<int, string>();
|
||
string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||
var length = alphabet.Length;
|
||
for (int i = 0; i < 26; i++)
|
||
{
|
||
dic.Add(i, alphabet.Substring(i, 1));
|
||
}
|
||
for (int i = 0; i < RadListBoxDestination.Items.Count; i++)
|
||
{
|
||
var item = RadListBoxDestination.Items[i];
|
||
var added_index = item.Index;
|
||
Label labelAZ = item.FindControl("labelAZ") as Label;
|
||
if (null != labelAZ)
|
||
{
|
||
if (dic.ContainsKey(added_index))
|
||
{
|
||
labelAZ.Text = dic[added_index];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
#region
|
||
|
||
public void upload_click(RadAsyncUpload Upload1, Image img)
|
||
{
|
||
if (Upload1.UploadedFiles.Count < 1)
|
||
{
|
||
RadAjaxManager1.Alert("未选择图片!");
|
||
return;
|
||
}
|
||
|
||
var uploadFile = Upload1.UploadedFiles[0];
|
||
var extension = uploadFile.GetExtension();
|
||
var extension_list = new string[] { ".jpg", ".png", ".jpeg", ".bmp", ".gif" };
|
||
if (!extension_list.Contains(extension))
|
||
{
|
||
RadAjaxManager1.Alert("文件格式错误!");
|
||
return;
|
||
}
|
||
|
||
if (BasePage.SaveFile(uploadFile, Context, out string filePath))
|
||
{
|
||
img.ImageUrl = "~" + filePath;
|
||
}
|
||
else
|
||
{
|
||
RadAjaxManager1.Alert("上传失败!");
|
||
}
|
||
}
|
||
|
||
public void Remove_Click(Image img)
|
||
{
|
||
if (!string.IsNullOrEmpty(img.ImageUrl))
|
||
{
|
||
string path = Server.MapPath(img.ImageUrl);
|
||
if (File.Exists(path))
|
||
{
|
||
File.Delete(path);
|
||
}
|
||
img.ImageUrl = "";
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
|
||
}
|
||
} |