版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xml1996/article/details/84201246
查询学生信息为例:
父窗体部分:
#region 虚方法
//将查询的内容转换成数据库中的列名称
public virtual string ToName(string combo)
{
return "";
}
//获得数据库名称
protected virtual string Getdbtable()
{
return "";
}
//显示数据
protected virtual void ToDgv(enGroupFind enGroupFind)
{
}
#endregion
#region 窗体登录初始化,控件Enable性质Comb控件Items公共内容添加
private void frmTFather_Load(object sender, EventArgs e)
{
DTP1.Visible = false;
CmbName2.Enabled = false;
CmbOper2.Enabled = false;
CmbRelation2.Enabled = false;
txtContext2.Enabled = false;
CmbName3.Enabled = false;
CmbOper3.Enabled = false;
txtContext3.Enabled = false;
CmbOper1.Items.Add(">");
CmbOper1.Items.Add("<");
CmbOper1.Items.Add("=");
CmbOper2.Items.Add(">");
CmbOper2.Items.Add("<");
CmbOper2.Items.Add("=");
CmbOper3.Items.Add(">");
CmbOper3.Items.Add("<");
CmbOper3.Items.Add("=");
CmbRelation1.Items.Add("与");
CmbRelation1.Items.Add("或");
CmbRelation1.Items.Add("非");
CmbRelation2.Items.Add("与");
CmbRelation2.Items.Add("或");
CmbRelation2.Items.Add("非");
}
#endregion
#region 点击查询后判空,以及给输入内容赋值
private void btnSearch_Click(object sender, EventArgs e)
{
//判空
if (CmbRelation1.Text == "")
{
if (CmbName1.Text == "" || CmbOper1.Text == "" || txtContext1.Text == "")
{
MessageBox.Show("第一行查询条件为空,请添加条件");
}
}
if (CmbRelation1.Text != "")
{
if (CmbName1.Text == "" || CmbOper1.Text == "" || txtContext1.Text == "" || CmbName2.Text == "" || CmbOper2.Text == "" || txtContext2.Text == "")
{
MessageBox.Show("输入的查询条件为空,请添加条件");
}
}
if (CmbRelation2.Text != "")
{
if (CmbName1.Text == "" || CmbOper1.Text == "" || txtContext1.Text == "" || CmbName2.Text == "" || CmbOper2.Text == "" || txtContext2.Text == "" || CmbName3.Text == "" || CmbOper3.Text == "" || txtContext3.Text == "")
{
MessageBox.Show("输入的查询条件为空,请添加条件");
}
}
//实例化实体层
enGroupFind enGroupFind = new enGroupFind();
//把控件的值通过虚方法ToName传递给实体层参数
enGroupFind.CmbName1 = ToName(CmbName1.Text.Trim ());
enGroupFind.CmbName2 = ToName(CmbName2.Text.Trim());
enGroupFind.CmbName3 = ToName(CmbName3.Text.Trim());
enGroupFind.Cmboper1 = CmbOper1.Text.Trim();
enGroupFind.Cmboper2 = CmbOper2.Text.Trim();
enGroupFind.Cmboper3 = CmbOper3.Text.Trim();
enGroupFind.Cmbrelation1 = ToName(CmbRelation1.Text.Trim());
enGroupFind.Cmbrelation2 = ToName(CmbRelation2.Text.Trim());
//txtContext1.Text=DTP1.Text.Trim();
enGroupFind.Txtcontext1 = txtContext1.Text.Trim();
enGroupFind.Txtcontext2 = txtContext2.Text.Trim();
enGroupFind.Txtcontext3 = txtContext3.Text.Trim();
//实体层的GetDataTable 变量是存数据库名字的地方
//虚方法Getdbtable把在子窗体中查到的内容赋值给它
enGroupFind.GetDataTable = Getdbtable();
//虚方法ToDgv,只实现了实现这个方法的传递
//他实现给在子类中传值,在子类中返回表显示出来
ToDgv(enGroupFind);
}
#endregion
#region comb控件状态改变时候日期控件显示
/// <summary>
/// 第一个选择框状态改变时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CmbName1_SelectedIndexChanged(object sender, EventArgs e)
{
if (CmbName1.Text == "注册日期" || CmbName1.Text == "上机日期" || CmbName1.Text == "上机时间" || CmbName1.Text == "下机日期" || CmbName1.Text == "下机时间")
{
txtContext1.Visible = false;
DTP1.Visible = true;
txtContext1.Text = DTP1.Value.ToString();
}
}
/// <summary>
/// 第二个选择框状态改变时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CmbName2_SelectedIndexChanged(object sender, EventArgs e)
{
if (CmbName2.Text == "注册日期"||CmbName2.Text == "上机日期" || CmbName2.Text == "上机时间" || CmbName2.Text == "下机日期" || CmbName1.Text == "下机时间")
{
txtContext2.Visible = false;
DTP2.Visible = true;
txtContext2.Text = DTP2.Value.ToString();
}
}
/// <summary>
/// 第三个选择框状态改变时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CmbName3_SelectedIndexChanged(object sender, EventArgs e)
{
if (CmbName3.Text == "注册日期"||CmbName3.Text == "上机日期" || CmbName3.Text == "上机时间" || CmbName3.Text == "下机日期" || CmbName3.Text == "下机时间")
{
txtContext3.Visible = false;
txtContext3.Text = DTP3.Value.ToString();
DTP3.Visible = true;
}
}
#endregion
#region 如果选择组合关系后,控件Enable情况
private void CmbRelation1_SelectedIndexChanged(object sender, EventArgs e)
{
CmbName2.Enabled = true;
CmbOper2.Enabled = true;
CmbRelation2.Enabled = true;
txtContext2.Enabled = true;
CmbName3.Enabled = true;
CmbOper3.Enabled = true;
txtContext3.Enabled = true;
}
private void CmbOper1_SelectedIndexChanged(object sender, EventArgs e)
{
}
#endregion
#region 触发日期框的时候,把更改的日期传值给实体参数
private void DTP1_ValueChanged(object sender, EventArgs e)
{
txtContext1.Text = DTP1.Value.ToString();
}
private void DTP2_ValueChanged(object sender, EventArgs e)
{
txtContext2.Text = DTP2.Value.ToString();
}
private void DTP3_ValueChanged(object sender, EventArgs e)
{
txtContext3.Text = DTP3.Value.ToString();
}
#endregion
#region 重置信息,删除信息
private void btnClear_Click(object sender, EventArgs e)
{
foreach (Control item in this.groupBox1 .Controls)
{
if (item is TextBox || item is ComboBox)
{
item.Text = "";
}
}
DTP1.Hide();
DTP2.Hide();
DTP3.Hide();
txtContext1.Show();
txtContext2.Show();
txtContext3.Show();
}
#endregion
#region 导出Excel操作
private void btnExportExcel_Click(object sender, EventArgs e)
{
//string name = "";
//ExcelOut ex = new ExcelOut();
//ex.RExcel(name, dgvCollect);
}
#endregion
子窗体部分:
#region 虚方法重写
/// <summary>
/// 重写虚方法:将查询的内容转换成数据库中的列名称
/// </summary>
/// <param name="combo"></param>
/// <returns></returns>
public override string ToName(string combo)
{
switch (combo)
{
case "卡号":
return "userID";
case "学号":
return "studentID";
case "注册日期":
return "date";
case "与":
return "and";
case "或":
return "or";
case "非":
return "not";
//如果用到了ToName方法但是没有输入值则返回空
default:
return "";
}
}
/// <summary>
/// 重写虚方法:获得数据库名称
/// </summary>
/// <returns></returns>
protected override string Getdbtable()
{
return "student_info";
}
/// <summary>
/// 重写虚方法:显示数据
/// </summary>
/// <param name="enGroupFind"></param>
protected override void ToDgv(enGroupFind enGroupFind)
{
//传值到外观层
Facade.enGroupFindFacade grouFind = new Facade.enGroupFindFacade();
DataTable result = new DataTable();
result = grouFind.GroupCheck(enGroupFind);
if (result .Rows.Count == 0)
{
MessageBox.Show("没有记录");
}
else
{
//把查询到的tabe result 返回到表中
dgvCollect.DataSource = result;
dgvCollect.Refresh();
}
}
#endregion
#region 窗体登录后显示的内容
/// <summary>
/// 教师组合查询学生信息,窗体登录后显示的内容
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void frmTFInquireStudent_Load(object sender, EventArgs e)
{
//this.Text = "学生信息";
CmbName1.Items.Add("卡号");
CmbName1.Items.Add("学号");
CmbName1.Items.Add("注册日期");
CmbName2.Items.Add("卡号");
CmbName2.Items.Add("注册日期");
CmbName2.Items.Add("学号");
CmbName3.Items.Add("卡号");
CmbName3.Items.Add("注册日期");
CmbName3.Items.Add("学号");
}
#endregion