using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace OEMS
{
public partial class ComputerInfo : Form
{
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter();
DataSet ds = new DataSet();//定义全局变量,注意要new,不然后面引用的时候会出现ds为null
DataSet dshardware = new DataSet();
DataSet dswindow = new DataSet();
string ComputerIDforDel;
string connstring = System.Configuration.ConfigurationManager.AppSettings["OEMSconnstring"];
// string connstring = @"server=192.168.1.12;database=OEMS;uid=nb;pwd=1";//连接字符串
public ComputerInfo()
{
InitializeComponent();
}
private void FindToolStripMenuItem_Click(object sender, EventArgs e)
{
clear();
find();
RowsStateChanged();
}//find按钮
private void find()
{
pnHardwareInfo.Focus();//查找框获得焦点,以移除dgv的选中状态,来使得dgv的编辑框内容接受
txtHardwareComputerID.Enabled = false;
txtWindowInfoComputerID.Enabled = false;//禁用ID编辑框,为避免ID错乱
string findvalue = txtFindsomething.Text.Trim();//获得文本框的值
string cbbvalue = cbbfind.SelectedItem.ToString();//获得下拉框的选中值
ds = appCode.DALL.findResult(findvalue, cbbvalue);
dt = ds.Tables[0];
ds.Tables[0].TableName = "ComputerInfo";
dataGridView1.DataSource = dt;
}
//鼠标点击单元格事件
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{//鼠标点击单元格事件
RowsStateChanged();//调用方法
}
private void getHardwareInfo(string ComputerID)
{
dshardware = appCode.DALL.findHardwareInfo(ComputerID);//获取Hardwareinfo信息
if (dshardware.Tables[0].Rows.Count > 0)//如果该ds不为空,即没有输入hardwareInfo信息的时候,不做处理
{
txtHardwareComputerID.Text = dshardware.Tables[0].Rows[0]["ComputerID"].ToString();
txtCpu.Text = dshardware.Tables[0].Rows[0]["Cpu"].ToString();
txtMotherboard.Text = dshardware.Tables[0].Rows[0]["Motherboard"].ToString();
txtMotherboardDate.Text = Convert.ToDateTime(dshardware.Tables[0].Rows[0]["MotherboardDate"]).Date.ToShortDateString();//取短时间
txtRAM.Text = dshardware.Tables[0].Rows[0]["Ram"].ToString();
txtHardDisk.Text = dshardware.Tables[0].Rows[0]["HardDisk"].ToString();
txtMonitor.Text = dshardware.Tables[0].Rows[0]["Monitor"].ToString();
txtMonitorDate.Text = Convert.ToDateTime(dshardware.Tables[0].Rows[0]["MonitorDate"]).Date.ToShortDateString();//取短时间
}
else
{
txtboxtdefoult();
}
}//获取到HardwareInfo的dataset并读取内容到txtbox
private void getHardwareTextBoxInfo()
{
if (dshardware.Tables[0].Rows.Count == 0)//这里判断如果dshardware里面有Rows,代表是修改数据,等于0就是没有Rows,就要添加
{
//DataTable dtHardware = new DataTable();
dshardware.Tables[0].Rows.Add();//添加新行,由于在dgv的单元格点击事件中有查询,所以此出已经有表存在,但是没有Rows
}
dshardware.Tables[0].Rows[0]["ComputerID"] = txtHardwareComputerID.Text;
dshardware.Tables[0].Rows[0]["Cpu"] = txtCpu.Text;
dshardware.Tables[0].Rows[0]["Motherboard"] = txtMotherboard.Text;
dshardware.Tables[0].Rows[0]["MotherboardDate"] = txtMotherboardDate.Text;//取短时间
dshardware.Tables[0].Rows[0]["Ram"] = txtRAM.Text;
dshardware.Tables[0].Rows[0]["HardDisk"] = txtHardDisk.Text;
dshardware.Tables[0].Rows[0]["Monitor"] = txtMonitor.Text;
dshardware.Tables[0].Rows[0]["MonitorDate"] = txtMonitorDate.Text;
}
private void getWindowInfo(string ComputerID)
{
dswindow = appCode.DALL.findWindowInfo(ComputerID);//获取windowInfo信息.
if (dswindow.Tables[0].Rows.Count > 0)//如果该ds为空,即没有输入windowInfo信息的时候,不做处理
{
txtWindowInfoComputerID.Text = dswindow.Tables[0].Rows[0]["ComputerID"].ToString();
txtIPAdress.Text = dswindow.Tables[0].Rows[0]["IPAddress"].ToString();
txtMACAdress.Text = dswindow.Tables[0].Rows[0]["MACAddress"].ToString();
txtComputerName.Text = dswindow.Tables[0].Rows[0]["ComputerName"].ToString();
}
}//获取到WindowInfo的dataset并读取内容到txtbox
private void getWindowTextBoxInfo()
{
if (dswindow.Tables[0].Rows.Count == 0)
{
dswindow.Tables[0].Rows.Add();
}
dswindow.Tables[0].Rows[0]["ComputerID"] = txtWindowInfoComputerID.Text;
dswindow.Tables[0].Rows[0]["IPAddress"] = txtIPAdress.Text;
dswindow.Tables[0].Rows[0]["MACAddress"] = txtMACAdress.Text;
dswindow.Tables[0].Rows[0]["ComputerName"] = txtComputerName.Text;
}
private void clear()//清楚文本框内容
{
txtHardwareComputerID.Clear();
txtCpu.Clear();
txtMotherboard.Clear();
txtMotherboardDate.Text = DateTime.Now.Date.ToShortDateString();
txtRAM.Clear();
txtHardDisk.Clear();
txtMonitor.Clear();
txtMonitorDate.Text = DateTime.Now.Date.ToShortDateString();
txtWindowInfoComputerID.Clear();
txtIPAdress.Clear();
txtMACAdress.Clear();
txtComputerName.Clear();//每次激活此事件前先清理文本框的内容.
}
private void txtboxtdefoult()//清楚文本框内容
{
txtHardwareComputerID.Text = "";
txtCpu.Text = "";
txtMotherboard.Text = "";
txtMotherboardDate.Text = "";
txtRAM.Text = "";
txtHardDisk.Text = "";
txtMonitor.Text = "";
txtMonitorDate.Text = "";
txtWindowInfoComputerID.Text = "";
txtIPAdress.Text = "";
txtMACAdress.Text = "";
txtComputerName.Text = "";
}
private void AddToolStripMenuItem_Click(object sender, EventArgs e)
{
if (ds.Tables.Count != 0)//如果当前ds有内容
{
txtHardwareComputerID.Enabled = true;
txtWindowInfoComputerID.Enabled = true;//启用ID编辑框,为add新数据
ckbMoreInfo.Checked = true;//用来显示隐藏区域的内容
((DataTable)dataGridView1.DataSource).Rows.Add(dt.NewRow());
dt.Rows[dt.Rows.Count - 1]["DateOfSet"] = DateTime.Now;//给默认字段赋值
dt.Rows[dt.Rows.Count - 1]["DateOfpur"] = "1999-9-9";//给默认字段赋值
dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1];//新增行获得焦点
dataGridView1.BeginEdit(false);//新添加的行第一个单元格进入编辑状态
}
else//否则.不做任何处理.
{
return;
}
}
private void DeleteToolStripMenuItem_Click(object sender, EventArgs e)
{
pnHardwareInfo.Focus();
if (ds.Tables.Count == 0)
{
return;
}
int i = dataGridView1.CurrentCell.RowIndex;//得到当前的行号
ComputerIDforDel = dataGridView1.Rows[i].Cells["ComputerID"].Value.ToString();//获取当前要删除行的主键
if ((MessageBox.Show("Are You Sure You Want To Delete? " + dataGridView1.Rows[i].Cells[2].Value
+ " ?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) == DialogResult.Yes)
{
if (i != -1)
{
dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
//ckbIsNoDelete.Checked = true;
clear();
try
{
appCode.DALL.DeleteInfo(ComputerIDforDel, "HardwareInfo");
appCode.DALL.DeleteInfo(ComputerIDforDel, "WindowInfo");
appCode.others.UpdateByDataSet(ds, "ComputerInfo", connstring);
MessageBox.Show("Successfully Saved!", "Prompt", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
}
}
}
private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
{
txtFindsomething.Focus();
int i;
int j;
int k;
if (ckbMoreInfo.Checked)//选中了显示全部的选项
{
if (ckbIsNoDelete.Checked)//判断是不是要错删除操作
{
//try
//{
// appCode.DALL.DeleteInfo(ComputerIDforDel, "HardwareInfo");
// appCode.DALL.DeleteInfo(ComputerIDforDel, "WindowInfo");
// appCode.others.UpdateByDataSet(ds, "ComputerInfo", connstring);
// MessageBox.Show("Successfully Saved!", "Prompt", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
// return;
//}
//catch (Exception ex)
//{
// MessageBox.Show(ex.Message.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
// return;
//}
}
//走到这里说明不是删除操作,是更新操作,这里没有判断是否有更改txtbox的值,全部提交
if (ds.HasChanges())//如果dataset有更改过,要这一步主要是用来确定是不是添加操作,如果是添加操作,先执行了这一步,下面那2个表才有外键关联.
{
i = appCode.others.UpdateByDataSet(ds, "ComputerInfo", connstring);
if (i != 0)
{
MessageBox.Show("Save Failed...", "Prompt", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
}
try
{
getHardwareTextBoxInfo();//将文本框的值写入Dataset
getWindowTextBoxInfo();
}
catch
{
MessageBox.Show("You Set A Wrong Date!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
};
j = appCode.others.UpdateByDataSet(dshardware, "HardwareInfo", connstring);//更新dataset
k = appCode.others.UpdateByDataSet(dswindow, "WindowInfo", connstring);
if (k == 0 && j == 0)
{
MessageBox.Show("Successfully Saved!", "Prompt", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
MessageBox.Show("Save Failed...", "Prompt", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
}
else
{
MessageBox.Show("This Is Not Delete Time!Save Failed...", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
private void ckbMoreInfo_CheckedChanged(object sender, EventArgs e)
{
if (ckbMoreInfo.Checked == false)
{
this.Width = 512;
clear();
this.CenterToScreen();
}
else
{
this.Width = 922;
this.CenterToScreen();
RowsStateChanged();
}
}
private void ComputerInfo_Load(object sender, EventArgs e)
{
find();
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
//string id = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[1].Value.ToString();
//txtHardwareComputerID.Text = id;
//txtWindowInfoComputerID.Text = id;
}
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
//try
//{
// rowindex = dataGridView1.SelectedCells[0].RowIndex;
// columnindex = dataGridView1.SelectedCells[0].ColumnIndex;
//}
//catch
//{
//}
}
private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
}
private void RowsStateChanged()//行获得焦点,焦点更改事件
{
dshardware.Tables.Clear();
dswindow.Tables.Clear();
try
{
if (ckbMoreInfo.Checked)
{
//clear();//清楚当前文本框的内容
int index = dataGridView1.CurrentCell.RowIndex;//当前获得光标的是哪一行
string ComputerID = dataGridView1.Rows[index].Cells["ComputerID"].Value.ToString();//获得当前行的主键是
getHardwareInfo(ComputerID);
dshardware.Tables[0].TableName = "HardwareInfo";
getWindowInfo(ComputerID);
dswindow.Tables[0].TableName = "WindowInfo";
if (dshardware.Tables[0].Rows.Count==0)//如果没有查询到数据,将ID编辑框打开,以便可以输入数据
{
txtHardwareComputerID.Enabled = true;
txtWindowInfoComputerID.Enabled = true;//启用ID编辑框,为add新数据
}
}
}
catch
{
}
}
private void QuitToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
//删除的时候创建删除hardinfo的sql语句.在删除确认的时候先clear,执行删除hardinfo的方法.最后调用computerinfo的update方法
}
}