using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;namespace TechnologyProject.项目管理.加计扣除.ERP导入
{public partial class superDeduction : Form{DataGridViewRow row = new DataGridViewRow();//科研项目表的选红行DataSet ds_Data = new DataSet();//excel DSDataTable datatable_ERP = null;//ERP导入DS
Hashtable hs_superDeductionERP = new Hashtable();//datagridviewpublic superDeduction(){InitializeComponent();this.cmbMatchShow.SelectedIndex = 0;hs_superDeductionERP.Add("ID", "ID");hs_superDeductionERP.Add("项目唯一标识", "kj9000a");hs_superDeductionERP.Add("局级项目编号", "kj0065a");hs_superDeductionERP.Add("厂处级项目编号", "kj0068a");hs_superDeductionERP.Add("项目名称", "kj8101a");hs_superDeductionERP.Add("项目内码", "kj8102a");hs_superDeductionERP.Add("项目编号", "kj8103a");hs_superDeductionERP.Add("二级单位", "kj8104a");hs_superDeductionERP.Add("专业", "kj8105a");hs_superDeductionERP.Add("项目级别", "kj8106a");hs_superDeductionERP.Add("年度", "kj8107a");hs_superDeductionERP.Add("标识", "kj8108a");hs_superDeductionERP.Add("加计扣除标识", "kj8128a");hs_superDeductionERP.Add("加计扣除类型", "kj8129a");hs_superDeductionERP.Add("条款内容", "kj8130a");hs_superDeductionERP.Add("8大项类型", "kj8403a");hs_superDeductionERP.Add("金额", "kj8114a");hs_superDeductionERP.Add("备注", "kj8115a");btnCheck.Enabled = false;btnSave.Enabled = false;}public void FormShow(DataGridViewRow Srow){row = Srow;this.ShowDialog();}#region 选择Excelprivate void btnChoose_Click(object sender, EventArgs e){try{OpenFileDialog openFD = new OpenFileDialog();//打开文件openFD.Filter = "所有 Office Excel 文件|(*.xls;*.xl*;*.xlt;*.xlsx;*.xlc;*.xlw)";//选择器if (openFD.ShowDialog() != DialogResult.OK)return;this.txtPath.Text = openFD.FileName;if (!System.IO.File.Exists(this.txtPath.Text))//如果要导入的名字和选中的不同,返回return;PrintStatement print = new PrintStatement();string filedir = string.Empty;string[] tablenames = print.Print_ERP导入(ref ds_Data, this.txtPath.Text);//数据源和路径if (tablenames == null)return;SetAllSheet(tablenames);//通过数据库文件路径获取所有的Excel工作簿名称btnCheck.Enabled = true;}catch (Exception ex){}}/// <summary>获取所有的Excel工作簿名称</summary>void SetAllSheet(string[] tabnames){datatable_ERP = SetDT(ds_Data);//处理excel DS
            BindDataSource(datatable_ERP);}//处理数据表private DataTable SetDT(DataSet ds){DataTable dt = new DataTable();dt.Columns.Add("kj0083a");//项目名称dt.Columns.Add("kj8403a");//8大项类型dt.Columns.Add("kj8114a");//金额dt.Columns.Add("kj0086a");//专业dt.Columns.Add("kj0087a");//年度dt.Columns.Add("kj0084a");//项目级别dt.Columns.Add("kj9000a");//项目唯一标识dt.Columns.Add("kj0065a");//局级项目编号dt.Columns.Add("kj0068a");//厂处级项目编号dt.Columns.Add("kj8128a");//加计扣除标识dt.Columns.Add("kj8129a");//加计扣除类型dt.Columns.Add("kj8130a");//条款内容dt.Columns.Add("kj8112a");//八大项内码dt.Columns.Add("kj8113a");//排序号DataTable dtData = ds.Tables[0];for (int i = 0, j = 0; i < dtData.Rows.Count; i++){if (string.IsNullOrEmpty(dtData.Rows[i][0].ToString())){continue;}//如果8大项类型为空,Excel导入的DataTable开始循环下一行,跳出当前i的所在循环
dt.Rows.Add();dt.Rows[j]["kj0083a"] = row.Cells["xmmc"].Value.ToString();//项目名称dt.Rows[j]["kj0086a"] = row.Cells["zy"].Value.ToString();//专业dt.Rows[j]["kj0087a"] = row.Cells["nd"].Value.ToString();//年度dt.Rows[j]["kj0084a"] = row.Cells["xmjb"].Value.ToString();//项目级别dt.Rows[j]["kj8403a"] = dtData.Rows[i][0];//8大项类型dt.Rows[j]["kj8114a"] = dtData.Rows[i][1];//金额dt.Rows[j]["kj9000a"] = row.Cells["ID"].Value.ToString();//项目唯一标识dt.Rows[j]["kj0065a"] = row.Cells["kj0065a"].Value.ToString();//局级项目编号dt.Rows[j]["kj0068a"] = row.Cells["kj0068a"].Value.ToString();//厂处级项目编号dt.Rows[j]["kj8128a"] = row.Cells["kj8128a"].Value.ToString();//加计扣除标识dt.Rows[j]["kj8129a"] = row.Cells["kj8129a"].Value.ToString();//加计扣除类型dt.Rows[j]["kj8130a"] = row.Cells["kj8130a"].Value.ToString();//条款内容j++;}return dt;}//绑定数据源private void BindDataSource(DataTable dtSource){this.dataGV1.AutoGenerateColumns = false;dataGV1.DataSource = dtSource;}#endregion#region 显示匹配项改变事件private void cmbMatchShow_SelectedIndexChanged(object sender, EventArgs e){try{BindDataSouce(cmbMatchShow.Text);SetDGVColor();}catch (Exception ex){}}public void BindDataSouce(string combotext){string RowFilter = string.Empty;DataView dv = datatable_ERP.DefaultView;if (combotext == "已匹配")RowFilter = "Flag is not null";else if (combotext == "未匹配")RowFilter = "Flag is null";dv.RowFilter = RowFilter;this.dataGV1.AutoGenerateColumns = false;this.dataGV1.DataSource = dv;}public void SetDGVColor(){//改变当前单元格的颜色foreach (DataGridViewRow dgvr in this.dataGV1.Rows){DataRowView drv = (DataRowView)dgvr.DataBoundItem;if (string.IsNullOrEmpty(drv["Flag"].ToString()))dgvr.DefaultCellStyle.ForeColor = System.Drawing.Color.Black;elsedgvr.DefaultCellStyle.ForeColor = System.Drawing.Color.Blue;}}#endregion#region 导入数据private void btnSave_Click(object sender, EventArgs e){try{if (dataGV1.CurrentRow == null) return;Cursor.Current = Cursors.WaitCursor;DataSet ds = new DataSet();//实例化一个dsDataTable dt = datatable_ERP.Copy();//将datagridview的datatable复制,再赋给dtDataView dv = dt.DefaultView;//将dt的默认表的视图赋给dvdv.RowFilter = "Flag is  null";//dataview的过滤器,Flag不等于空,排除Row的方法dt.Columns.Remove("Flag");//排除列的方法dt.Columns.Remove("kj8403a");ds.Tables.Add(dv.ToTable());//将dv转换为表,加到ds里OperaterClass.NewInsert(Const.LISTNAME_JJCC, Const.CONTENTTYPE_JJCC, ref ds, UserInfo.Department);this.btnSave.Enabled = false;this.btnCheck.Enabled = false;MessageBox.Show("已成功导入 " + ds.Tables[0].Rows.Count + " 条信息!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);}catch (Exception ex){MessageBox.Show("ERP数据导入失败!\n\r请检查您选择的Excel模板是否正确!\n\r。系统提示:" + ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);}}#endregion#region 检查数据private void btnCheck_Click(object sender, EventArgs e){/*如何在一个datagridview中绑定数据源拼凑成另一张表* 数据源本身来源于一个导入的Excel数据源和传入的DataRow数据组成的一张DataTable,* 利用Excel数据源内容从字典表中查到的id,id加到目前的DataTable* 将这个DataTable的数据存到数据库中* for()循环要查的内容dr* {*      for()固定的数据字典dr*      {break;}内容在数据字典中找到,得到id,break跳出for循环*      *      for()用得到的id到另一张表中查询,如果有表示查询到了数据,isExists = true,dr*      {}*      *      如果isExists = true,在内容表中标记这列为已将存在*      将id加到内容dr中     * }*/try{btnSave.Enabled = true;//得到八大项字典表数据DataTable dtBDX = OperaterClass.SearchData(Const.LISTNAME_JJKC8DXZDB, Const.CONTENTTYPE_JJKC8DX, "", null).Tables[0];//根据项目名称,得到该项目对应的所有加计扣除列表数据CamlBuilder cbl = new CamlBuilder();cbl.AddWhere("Eq", "kj0083a", row.Cells["xmmc"].Value.ToString(), "Text");//DataTable dtJJKC = OperaterClass.SearchData(Const.LISTNAME_JJCC, Const.CONTENTTYPE_JJCC, cbl.GetCamlString(), null).Tables[0];DataSet dsJJKC = OperaterClass.SearchData(Const.LISTNAME_JJCC, Const.CONTENTTYPE_JJCC, cbl.GetCamlString(), null);DataTable dtJJKC = new DataTable();if (dsJJKC != null){dtJJKC = dsJJKC.Tables[0];}datatable_ERP.Columns.Add("Flag");//标识列,表示改加计扣除项是否存在for (int i = 0; i < datatable_ERP.Rows.Count; i++){string id = string.Empty;//8大项IDstring paNum = string.Empty;//排序号string lx = datatable_ERP.Rows[i]["kj8403a"].ToString();//8大项类型for (int j = 0; j < dtBDX.Rows.Count; j++){if (lx == "1、仪器" && dtBDX.Rows[j]["kj8402a"].ToString() == "10"){lx = "1、仪器1";}else if (lx == "2、设备" && dtBDX.Rows[j]["kj8402a"].ToString() == "10"){lx = "2、设备1";}else if (lx == "1、仪器" && dtBDX.Rows[j]["kj8402a"].ToString() == "13"){lx = "1、仪器2";}else if (lx == "2、设备" && dtBDX.Rows[j]["kj8402a"].ToString() == "13"){lx = "2、设备2";}if (lx == dtBDX.Rows[j]["kj8403a"].ToString()){id = dtBDX.Rows[j]["ID"].ToString();paNum = dtBDX.Rows[j]["kj8405a"].ToString();}if (!string.IsNullOrEmpty(id)) break;//如果找到了,就跳出for循环
                    }bool isExists = false;//加计扣除项是否存在for (int k = 0; k < dtJJKC.Rows.Count; k++){if (id == dtJJKC.Rows[k]["kj8112a"].ToString())isExists = true;if (isExists) break;}if (isExists){datatable_ERP.Rows[i]["Flag"] = "1";}datatable_ERP.Rows[i]["kj8112a"] = id;datatable_ERP.Rows[i]["kj8113a"] = paNum;id = string.Empty;paNum = string.Empty;}BindDataSouce(cmbMatchShow.Text);SetDGVColor();}catch (Exception ex){MessageBox.Show(ex.Message);}}#endregionprivate void btnClose_Click(object sender, EventArgs e){this.Close();}}
}


 break,return,continue的使用区别

continue是跳出开始循环的一次新迭代,如下:

for(var i=1;i<=10;i++)
{   if(i==6)  {     continue;   }document.write(i);
}
//输出结果:1234578910

break是跳出包含在最内层循环的循环体或者退出一个switch语句,如下:

for(var i=1;i<=10;i++)
{   if(i==6)   {  break;   }document.write(i);
}
//输出结果:12345

在datagridview中查找到某条数据,更改这条数据

        if (UpdataDataSet != null && UpdataDataSet.Tables.Count != 0 && UpdataDataSet.Tables[0].Rows.Count != 0){//2013年11月7号for (int i = 0; i < UpdataDataSet.Tables[0].Rows.Count; i++){if (UpdataDataSet.Tables[0].Columns[i].ColumnName == "kj0064a"){UpdataDataSet.Tables[0].Columns[i].ColumnName = "kj0064a1";break;}}bool updata = OperaterClass.Updata(Const.CONTENTTYPE_JJCC, Const.CONTENTTYPE_JJCC, ref UpdataDataSet); }

return是用于指定函数返回的值。return语句只能出现在函数体内,出现在代码中的其他任何地方都会造成语法错误!当执行return语句时,即使函数主体中还有其他语句,函数执行也会停止!


selecte,new Row,itemarray,SreachData的使用

        public static DataSet ReCreateErJiDw(DataSet SourDS,string BmName){        //得到“单位简称”等于BmName的二级单位的所有DataRowDataSet ERJIDWS = OperaterClass.SearchData("二级单位列表", "二级单位", "", null,string.Empty);DataRow[] drs = ERJIDWS.Tables[0].Select("kj0172a ='" + BmName + "'");//在DataTable中查出“单位简称”等于BmName的DataRow,排除Row的方法if (drs.Length > 0)//如果有等于BmName的二级单位,这个二级单位的“单位性质”是上市,将传过来的sourDS的“项目级别”改为分公司,否则为勘探局{foreach(DataRow dr in SourDS.Tables[0].Rows){if (drs[0]["kj0177a"].ToString() == "上市")dr["kj0084a"] = "分公司";elsedr["kj0084a"] = "勘探局";}}return SourDS;

          DataSet ERJIDWS = OperaterClass.SearchData("二级单位列表", "二级单位", "", null, string.Empty);DataRow[] drs = ERJIDWS.Tables[0].Select("kj0172a ='" + "开发部" + "'");DataTable tb = ERJIDWS.Tables[0];DataRow dr= tb.NewRow();//得到一个和ERJIDWS的DataSet的表的列,一样的DataRow,相当于复制了一行空数据行dr["kj0172a"] = drs[0]["kj0172a"];//给空数据行的某列赋值

          DataSet SearchXMDS = null;//20130424新增CamlBuilder cbl = new CamlBuilder();cbl.AddWhere("Neq", "kj0084a", "厂处级", "Choice");string query = cbl.GetCamlString();SearchXMDS = OperaterClass.SearchData(Const.LISTNAME_KYXM, Const.CONTENTTYPE_KYXM,query,             new string[] { "ID","Title","kj0065a","kj0096a","kj0084a","kj0085a","kj0090a", "kj0113a", "kj0114a", "kj8036a" });//得到指定“列”、“栏”,满足caml语句,指定“column”的DSMessageBox.Show(SearchXMDS.Tables[0].Rows.Count.ToString());

         this.Cursor = Cursors.WaitCursor;//光标if (!CheckIsRight()) return;//检查控件的值bool isTrue = false;//是否成功DataSet dsSave = Zeda.AssistantClass.DataSetOperator.CreateDS<DB_018车位费收费记录表>();drcost = dsSave.Tables[0].NewRow();SetSaveDSValue();//设置全局变量DataRow类型drcost的值,drcost为一个空行dsSave.Tables[0].Rows.Add(drcost.ItemArray);//将drcost加到dsSave中,使用drcost直接加到一张表中,就不能再加到其他表中

          //DataRow.ItemArray 属性
          //通过一个数组来获取或设置此行的所有值。
          //DataTable.NewRow 方法
          //创建与该表具有相同架构的新 DataRow。

          if (FormAssistant.IsDsNull(dsSave)) return;isTrue = DataService.Instance.SaveParkingFeesChargingRecordsInfo(ref dsSave);drcost = null;if (isTrue){this.DialogResult = DialogResult.OK;this.Close();}

private void SetSaveDSValue(){drcost["DB0003A"] = this.txtDB0004A.Tag;//小区IDdrcost["DB0004A"] = this.txtDB0004A.EditValue;//小区名字drcost["DB0119A"] = this.txtDB0049A.Tag;//车库IDdrcost["DB0049A"] = this.txtDB0049A.EditValue;//车库}

         DataSet ERJIDWS = OperaterClass.SearchData("二级单位列表", "二级单位", "", null, string.Empty);DataRow[] drs = ERJIDWS.Tables[0].Select("kj0172a ='" + "开发部" + "'");DataTable tb = ERJIDWS.Tables[0];DataRow dr= tb.NewRow();//得到一个和ERJIDWS的DataSet的表的列,一样的DataRow,相当于复制了一行空数据行dr["kj0172a"] = drs[0]["kj0172a"];//给空数据行的某列赋值
                tb.Rows.Add(dr);DataTable tbe = ERJIDWS.Tables[0].Copy();//表的复制,包括内容tbe.Rows.Add(dr);//不能将dr再加到tbe表中,它已经属于tb表,DataRow是引用类型


对datagridview的单元格的操作

       foreach (DataGridViewRow dgvr in baseDgvItems.Rows)//设置Linklable的值,循环datagridview的每行
            {foreach (DataGridViewCell dgvc in dgvr.Cells)//循环单元格的每个单元格{if (dgvc is DataGridViewLinkCell){DataRowView drv = (DataRowView)dgvr.DataBoundItem;//不同的datagridview的行的转换DataGridViewColumn dgvColumn = baseDgvItems.Columns[dgvc.ColumnIndex];//根据单元格可以得到单元格的列明string currentField = dgvColumn.Name;string currentText = dgvColumn.HeaderText;string dataPropertyName = dgvColumn.DataPropertyName;if (!string.IsNullOrEmpty(dataPropertyName)){continue;}if (!string.IsNullOrEmpty(drv[currentField].ToString()))dgvc.Value = currentText;}}}


    private void dgvItems_CellClick(object sender, DataGridViewCellEventArgs e){try{if (e.ColumnIndex == -1 || e.RowIndex == -1)return;if (((DataGridView)sender).Columns[e.ColumnIndex] is DataGridViewLinkColumn) ;//判断单击的单元格是否为datagridviewlinkcolumn,触发事件的使用
                {DataRowView drv = (DataRowView)((DataGridView)sender).Rows[e.RowIndex].DataBoundItem;//sender为dgvItem,e为cellDataGridViewColumn dgvc = ((DataGridView)sender).Columns[e.ColumnIndex];if (!string.IsNullOrEmpty(dgvc.DataPropertyName)){if (drv["kj9000a"] != null && !string.IsNullOrEmpty(drv["kj9000a"].ToString())){ProgramDetail pd = new ProgramDetail();pd.FormShow(drv["kj9000a"].ToString());}}else{ShowPageForm Spf = new ShowPageForm();string url = drv[dgvc.Name].ToString();if (url == "") return;url = url.Substring(0, url.IndexOf(","));Spf.Formshow(url);}}}


 protected bool SaveAuditResult(string[] columnName, string[] value, string message){if (this.baseDgvItems.Rows.Count <= 0)return false;if (columnName.Length != value.Length){ControlOpt.ShowMessage("列数和值数不匹配,请确认!");return false;}this.Cursor = Cursors.WaitCursor;try{DataSet ds = new DataSet();DataTable dt = new DataTable();dt.Columns.Add(new DataColumn("ID", typeof(string)));//在datagridview中加一列foreach (string cn in columnName){dt.Columns.Add(new DataColumn(cn, typeof(string)));}foreach (DataGridViewRow dgvr in baseDgvItems.Rows)   //更新审查的阶段状态,构建要更新的DataSet
                {if (Convert.ToBoolean(dgvr.Cells["cb"].Value) == false)continue;DataRow dr = ((DataRowView)dgvr.DataBoundItem).Row;DataRow newDR = dt.NewRow();newDR["ID"] = dr["ID"].ToString();for (int i = 0; i < columnName.Length; i++){newDR[columnName[i]] = value[i];}dt.Rows.Add(newDR);}ds.Tables.Add(dt);if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0){ControlOpt.ShowMessage("请勾选列表中要操作的项!");return false;}if (MessageBox.Show("确定要执行" + message + "操作吗?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)return false;bool updata = OperaterClass.Updata(listName, contentType, ref ds);if (!updata){ControlOpt.ShowMessage(message + "保存失败!");return false;}for (int i = baseDgvItems.Rows.Count - 1; i >= 0; i--)//在datagridview中删除选中行{if (baseDgvItems.Rows[i].Cells["cb"].FormattedValue.ToString() == "True"){drv = (DataRowView)baseDgvItems.Rows[i].DataBoundItem;SearchDataSet.Tables[0].Rows.Remove(drv.Row);}}return true;}catch (Exception ex){ControlOpt.ShowMessage(ex.Message);return false;}finally{this.Cursor = Cursors.Default;}}


删除datagridview的行

     public void DeleteDataGridViewItems(DataGridView dgv, string TipMessages){Cursor.Current = Cursors.WaitCursor;DataTable dt = new DataTable();dt.Columns.Add(new DataColumn("ID", typeof(string)));foreach (DataGridViewRow dgvr in dgv.Rows){if (Convert.ToBoolean(dgvr.Cells["cb"].Value) == false)continue;DataRow dr = dt.NewRow();DataRowView drv = (DataRowView)dgvr.DataBoundItem;dr["ID"] = drv["ID"].ToString();dt.Rows.Add(dr);//取得所有选中的行的ID的DataTable}if (dt.Rows.Count <= 0){MessageBox.Show("请选中要删除的" + TipMessages + "!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);return;}if (MessageBox.Show("确定要删除这些" + TipMessages + "吗?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)return;try{DataSet ds = new DataSet();ds.Tables.Add(dt);if (OperaterClass.NewDelete(listName, contentType, ds, null))//将DataTable的加入到DataSet中,把DataSet给删除的接口,删除数据库中的数据{for (int i = dgv.Rows.Count - 1; i >= 0; i--)//将选中的行在现在的datagridview中的数据源中删除行{if (Convert.ToBoolean(dgv.Rows[i].Cells["cb"].Value) == false)continue;dgv.Rows.RemoveAt(i);}// MessageBox.Show("外协单位删除成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }}catch (Exception ex){MessageBox.Show(TipMessages + "外协单位删除失败!失败的原因如下:" + ex.Message.ToString(), "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);}Cursor.Current = Cursors.Default;}


得到DataTable的行号,去除行号这行数据

                    List<int> drindex = new List<int>();//存放行号for (int j = dt.Rows.Count - 1; j >= 0; j--){DataRow dr = dt.Rows[j];for (int i = 0; i < DsJJCC.Tables[0].Rows.Count; i++){if (dr["Title"].ToString() == DsJJCC.Tables[0].Rows[i]["kj0083a"].ToString())//已存在
                            {if (dt.Rows.Count > 0){drindex.Add(j);//将行号加到泛型数据中
                                }}}}for (int m = 0; m < drindex.Count; m++){dt.Rows.RemoveAt(drindex[m]);//去除指定行}


DataTable的排序问题

在C#中要对Datatable排序,可使用DefaultView的Sort方法。先获取Datatable的DefaultView,然后设置 得到的Dataview的sort属性,最后用视图的ToTable方法将排好序的dataview导出为Datatable。

        DataTable dt = new DataTable();dt.Columns.Add("ID", typeof(int));dt.Columns.Add("Name", typeof(string));dt.Rows.Add(new object[] { 12, "lwolf" });dt.Rows.Add(new object[] { 100,"kkkkk"});dt.Rows.Add(new object[] { 19,"jim" });dt.Rows.Add(new object[] { 1,"test" });DataTable dtCopy = dt.Copy();DataView dv = dt.DefaultView;dv.Sort = "ID";dtCopy = dv.ToTable();

给DataTable赋值,foreach和index++

           int index = 0;foreach (DataRow dr in SearchDataSet.Tables[0].Rows){if (dr["kj0084a"].ToString() == "厂处级"){dr["kj0068a"] = Code[index].Remove(Code[index].Length-1);index++;}}

在datagridview中加载本地图片

      /// <summary>/// 设置审阅状态图片/// </summary>/// <param name="dgv"></param>public static void SetStatePicture(DataGridView dgv, string columnName){foreach (DataGridViewRow dgvr in dgv.Rows){DataRowView drv = (DataRowView)dgvr.DataBoundItem;//如果没有在:Datagrid练习.Properties.Resources下加载,让Resources.designer.cs生成这个图片的信息,否则是找不到的dgvr.Cells[columnName].Value = (Image)global::Datagrid练习.Properties.Resources.ResourceManager.GetObject("已审阅");//dgvr.Cells[dgvColumnName].Value = global::Datagrid练习.Properties.Resources.ResourceManager.GetObject("查看详细");
            }}

转载于:https://www.cnblogs.com/hongmaju/p/4059859.html

datagridview的数据源的操作相关推荐

  1. c# easyui 赋值_C# DataGridView绑定数据源的方法

    开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定. 1. 简单的数据绑定 例1 using (SqlConnection conn = new SqlConnect ...

  2. Spark SQL与外部数据源的操作(Spark SQL ——> CSV/JSON/Parquet/hive/mysql)

    目录 一.Spark SQL支持的外部数据源 二.Spark SQL -> CSV 2.1 读CSV文件 a.有列名 b.无列名 2.2 写CSV文件 三.Spark SQL -> JSO ...

  3. 关于DataGridView的数据源绑定字符串两个值得注意的问题

    1. LINQ的查询结果无法直接作为DataGridView的数据源 DataGridView的DataSource属性为object类型,但并不意味着任何类型都可以作为DataGridView的数据 ...

  4. Winfrom DataGridView DataGridViewComboBoxCell 数据源绑定

    Winfrom DataGridView DataGridViewComboBoxCell 数据源绑定 解决方案: 1.先给数据源赋值 List<BindDataModel> Proces ...

  5. C# 多线程读取数据并保存在DataGridView中,如果操作?代码是什么?谢谢

    说个大概吧. 首先有一个读取数据的方法getData. 该方法里面有 获取数据A和放入DataGridView的操作. 然后有个总的方法getAllData来New 线程,线程调用getData方法, ...

  6. ssm多数据源的操作

    公司要求,需要使用两个数据库,一个mysql,一个oracle.所以需要配置两个数据库来进行操作. 1.首先,需要在jdbc.properties文件中将两个库的配置数据写入,不过一个写driver, ...

  7. Winform DataGridView修改数据源界面不刷新问题

    错误描述 对于dataGridView,设置数据源为一个List集合时,修改了List集合以后即使重新设置数据源界面也不会刷新. 注:如果先设置DataSource=null;可以重新加载,但是界面设 ...

  8. 章鱼哥出品—VB.NET DataGridView绑定数据源 quot;与货币管理器的位置关联的行不能设置为不可见quot; 问题的解决...

    DtaGridView绑定数据源后.假设想让数据条件显示的话,直接使用  My_Row.Visible = False就会出错.错误类型是 "与货币管理器的位置关联的行不能设置为不可见&qu ...

  9. datagridview绑定数据源不显示_sharding-jdbc系列之 数据源配置(一)

    spring boot Yaml方式 @Bean 定义一个Config类,配置数据源,上面的代码很简单,无非就是获取yaml文件,然后通过YmlByteArrayDataSource创建一个dataS ...

最新文章

  1. python3安装setuptools步骤_setuptools、pip的安装
  2. Unity GUI(uGUI)使用心得与性能总结
  3. 01XC-1: 动态规划
  4. 【剑指offer】反转链表
  5. OAuth2.0授权流程分析
  6. 数据结构与算法--数组中的逆序对
  7. Apache Subversion 1.7.2发布,开源版本控制工具
  8. python输入多个数字 找出只出现一个的数字_在python数组中找到接近给定数字的多个值...
  9. 李书福退出吉利汽车集团公司董事
  10. 【教程下载】QGIS的安装及中文配置教程.pdf
  11. WTS_ERAL_年假生成规则
  12. 教育企业邮箱购买哪个好用,还有英文邮件系统?
  13. 赢了世界冠军不意外,和AI在DOTA中并肩作战才让人又纠结又兴奋
  14. assertThat断言测试方法
  15. 数据库SQL语句检索相关
  16. 7 张图带你搞懂二层和三层交换机之间的区别
  17. js ajax上传文件功能
  18. 网络通信系统架构:构建分布式即时通讯(IM)系统方案详解!
  19. 饥荒mod制作教程--植物(灌木丛)--01
  20. 五、框架协议——合同

热门文章

  1. roscore : 出现:Traceback (most recent call last)
  2. BZOJ[2563] 阿狸和桃子的游戏
  3. 《塞尔达传说:荒野之息》开发者演讲
  4. 誉沃流媒体视频服务系统
  5. JAVA - 什么是IO流
  6. Textured Neural Avatars 论文方法简述
  7. 2023年京东618全品类预售数据查询
  8. 微信内置浏览器下载APP(APK)软件的方案
  9. 如何快速实现微信内直接下载App?
  10. OCR识别系列之一----技术实现