ZhiYeJianKang_PeiXun/Song.Site/Manage/Questions/Questions_Edit1.aspx.cs

258 lines
9.3 KiB
C#
Raw Normal View History

2025-02-20 15:41:53 +08:00
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using WeiSha.Common;
using Song.ServiceInterfaces;
using Song.Entities;
using WeiSha.WebControl;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace Song.Site.Manage.Questions
{
public partial class Questions_Edit1 : Extend.CustomPage
{
//试题id
private int id = WeiSha.Common.Request.QueryString["id"].Decrypt().Int32 ?? 0;
//试题类型
private int type = WeiSha.Common.Request.QueryString["type"].Int32 ?? 0;
//课程id
private int couid = WeiSha.Common.Request.QueryString["couid"].Int32 ?? 0;
//题型分类汉字名称
protected string[] typeStr = App.Get["QuesType"].Split(',');
Song.Entities.Organization org = null;
protected void Page_Load(object sender, EventArgs e)
{
//当前机构
org = Business.Do<IOrganization>().OrganCurrent();
this.SortSelect1.CourseChange += CourseChange;
if (!this.IsPostBack)
{
InitBind();
fill();
}
}
/// <summary>
/// 界面的初始绑定
/// </summary>
private void InitBind()
{
SortSelect1.InitBind();
if (couid > 0)
{
Song.Entities.Course cour = Business.Do<ICourse>().CourseSingle(couid);
if (cour != null)
{
SortSelect1.SbjID = cour.Sbj_ID;
SortSelect1.CouID = couid;
}
}
//题型
ddlType.DataSource = typeStr;
ddlType.DataBind();
if (type > 0) ddlType.SelectedIndex = type - 1;
}
/// <summary>
/// 当课程变更时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CourseChange(object sender, EventArgs e)
{
ddlKnlSort.Items.Clear();
//资料分类
Song.Entities.KnowledgeSort[] nc = Business.Do<IKnowledge>().GetSortAll(org.Org_ID, this.SortSelect1.CouID, true);
this.ddlKnlSort.DataSource = nc;
this.ddlKnlSort.DataTextField = "Kns_Name";
this.ddlKnlSort.DataValueField = "Kns_Id";
this.ddlKnlSort.DataBind();
ddlKnlSort.Items.Insert(0, new ListItem("--全部--", "0"));
}
void fill()
{
Song.Entities.Questions mm;
if (id != 0)
{
mm = Business.Do<IQuestions>().QuesSingle(id, false);
cbIsUse.Checked = mm.Qus_IsUse;
//唯一标识
ViewState["UID"] = mm.Qus_UID;
//所属专业、课程、章节
SortSelect1.SbjID = mm.Sbj_ID;
SortSelect1.CouID = mm.Cou_ID;
SortSelect1.OlID = mm.Ol_ID;
//难度
ListItem liDiff = ddlDiff.Items.FindByValue(mm.Qus_Diff.ToString());
if (liDiff != null)
{
ddlDiff.SelectedIndex = -1;
liDiff.Selected = true;
}
//相关资料
if (mm.Kn_ID > 0)
{
Song.Entities.Knowledge kn = Business.Do<IKnowledge>().KnowledgeSingle((int)mm.Kn_ID);
if (kn != null)
{
ListItem liKns = ddlKnlSort.Items.FindByValue(kn.Kns_ID.ToString());
if (liKns != null) liKns.Selected = true;
knTitle.InnerText = kn.Kn_Title;
tbKnTit.Text = kn.Kn_Title;
tbKnID.Text = kn.Kn_ID.ToString();
}
}
//错误信息
ltErrorInfo.Text = mm.Qus_ErrorInfo;
errorInfo.Visible = mm.Qus_IsError;
//错误提告
ltWrongInfo.Text = mm.Qus_WrongInfo;
wrongInfo.Visible = mm.Qus_IsWrong;
}
else
{
//如果是新增
mm = new Song.Entities.Questions();
ViewState["UID"] = WeiSha.Common.Request.UniqueID();
tbKnID.Text = "0";
}
//题干
tbTitle.Text = mm.Qus_Title;
//讲解
tbExplan.Text = mm.Qus_Explain;
//排序号
tbTax.Text = mm.Qus_Tax.ToString();
//试题答案
bindGrid(mm);
}
/// <summary>
/// 绑定选择题子项的列表
/// </summary>
private void bindGrid(Song.Entities.Questions q)
{
//最多几项
int maxItem = 8;
Song.Entities.QuesAnswer[] ans = Business.Do<IQuestions>().QuestionsAnswer(q, null);
List<Song.Entities.QuesAnswer> list = new List<QuesAnswer>();
for (int i = 0; i < maxItem; i++)
{
if (ans != null && i < ans.Length)
{
list.Add(ans[i]);
}
else
{
Song.Entities.QuesAnswer t = new QuesAnswer();
t.Ans_ID = -1;
t.Qus_UID = getUID();
list.Add(t);
}
}
gvAnswer.DataSource = list;
gvAnswer.DataKeyNames = new string[] { "Ans_ID" };
gvAnswer.DataBind();
}
/// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnEnter_Click(object sender, EventArgs e)
{
Song.Entities.Questions mm = id <= 0 ? new Song.Entities.Questions() : Business.Do<IQuestions>().QuesSingle(id);
//题型、学科、题干
mm.Qus_Type = this.type == 0 ? ddlType.SelectedIndex + 1 : this.type;
mm.Qus_IsUse = cbIsUse.Checked;
mm.Sbj_ID = SortSelect1.SbjID;
mm.Sbj_Name = SortSelect1.SbjName;
mm.Cou_ID = SortSelect1.CouID;
mm.Ol_ID = SortSelect1.OlID;
mm.Qus_Title = tranTxt(tbTitle.Text);
//排序号
int tax = 0;
int.TryParse(tbTax.Text, out tax);
mm.Qus_Tax = tax;
//难度
mm.Qus_Diff = Convert.ToInt32(ddlDiff.SelectedItem.Value);
//资料、讲解
if (tbKnID.Text != string.Empty)
mm.Kn_ID = Convert.ToInt32(tbKnID.Text);
mm.Qus_Explain = tbExplan.Text.Trim();
//UID
mm.Qus_UID = getUID();
//是否处理报错信息
if (cbWrong.Checked) mm.Qus_IsWrong = false;
//选择项
List<Song.Entities.QuesAnswer> qans = new List<QuesAnswer>();
for (int i = 0; i < gvAnswer.Rows.Count; i++)
{
//单选钮
RadioButton rb = (RadioButton)gvAnswer.Rows[i].FindControl("rbAns");
//选项文本框
TextBox tb = (TextBox)gvAnswer.Rows[i].FindControl("itemTxt");
//主键
int ansid = 0;
string keyId = gvAnswer.DataKeys[gvAnswer.Rows[i].RowIndex].Value.ToString();
int.TryParse(keyId, out ansid);
//如果文本框为空,则跳过
if (tb.Text.Trim() == "") continue;
//创建选项的对象
Song.Entities.QuesAnswer ans = new Song.Entities.QuesAnswer();
ans.Ans_Context = tb.Text.Trim();
ans.Ans_IsCorrect = rb.Checked;
ans.Qus_ID = id;
ans.Qus_UID = getUID();
ans.Ans_ID = ansid;
if (ans.Ans_ID <= 0)
ans.Ans_ID = new Random((i + 1) * DateTime.Now.Millisecond).Next(1, 1000);
qans.Add(ans);
}
mm.Qus_Items = Business.Do<IQuestions>().AnswerToItems(qans.ToArray());
//确定操作
try
{
if (id == 0)
{
id = Business.Do<IQuestions>().QuesAdd(mm);
}
else
{
Business.Do<IQuestions>().QuesSave(mm);
}
Master.AlertCloseAndRefresh("操作成功!");
}
catch (Exception ex)
{
Master.Alert(ex.Message);
}
}
/// <summary>
/// 处理题干
/// </summary>
/// <param name="txt"></param>
/// <returns></returns>
private string tranTxt(string txt)
{
txt = txt.Replace("(", "");
txt = txt.Replace(")", "");
txt = txt.Replace("", " ");
txt = Regex.Replace(txt, @"[^]+", "    ");
txt = Regex.Replace(txt, @"_{2,}", "    ");
return txt;
}
}
}