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方法 }}