datagridview的数据源的操作

时间:2022-09-04 10:31:22
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 DS
DataTable datatable_ERP = null;//ERP导入DS Hashtable hs_superDeductionERP = new Hashtable();//datagridview
public superDeduction()
{
InitializeComponent();
this.cmbMatchShow.SelectedIndex = ;
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 选择Excel
private 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[];
for (int i = , j = ; i < dtData.Rows.Count; i++)
{
if (string.IsNullOrEmpty(dtData.Rows[i][].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][];//8大项类型
dt.Rows[j]["kj8114a"] = dtData.Rows[i][];//金额
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;
else
dgvr.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();//实例化一个ds
DataTable dt = datatable_ERP.Copy();//将datagridview的datatable复制,再赋给dt
DataView dv = dt.DefaultView;//将dt的默认表的视图赋给dv
dv.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[].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[]; //根据项目名称,得到该项目对应的所有加计扣除列表数据
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[];
}
datatable_ERP.Columns.Add("Flag");//标识列,表示改加计扣除项是否存在
for (int i = ; i < datatable_ERP.Rows.Count; i++)
{
string id = string.Empty;//8大项ID
string paNum = string.Empty;//排序号
string lx = datatable_ERP.Rows[i]["kj8403a"].ToString();//8大项类型
for (int j = ; j < dtBDX.Rows.Count; j++)
{
if (lx == "1、仪器" && dtBDX.Rows[j]["kj8402a"].ToString() == "")
{
lx = "1、仪器1";
}
else if (lx == "2、设备" && dtBDX.Rows[j]["kj8402a"].ToString() == "")
{
lx = "2、设备1";
}
else if (lx == "1、仪器" && dtBDX.Rows[j]["kj8402a"].ToString() == "")
{
lx = "1、仪器2";
}
else if (lx == "2、设备" && dtBDX.Rows[j]["kj8402a"].ToString() == "")
{
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 = ; k < dtJJKC.Rows.Count; k++)
{
if (id == dtJJKC.Rows[k]["kj8112a"].ToString())
isExists = true;
if (isExists) break;
}
if (isExists)
{
datatable_ERP.Rows[i]["Flag"] = "";
}
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);
}
} #endregion private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
} }
}

 break,return,continue的使用区别

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

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

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

for(var i=;i<=;i++)
{
  if(i==)
  {
  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的二级单位的所有DataRow
DataSet ERJIDWS = OperaterClass.SearchData("二级单位列表", "二级单位", "", null,string.Empty);
DataRow[] drs = ERJIDWS.Tables[].Select("kj0172a ='" + BmName + "'");//在DataTable中查出“单位简称”等于BmName的DataRow,排除Row的方法
if (drs.Length > )//如果有等于BmName的二级单位,这个二级单位的“单位性质”是上市,将传过来的sourDS的“项目级别”改为分公司,否则为勘探局
{
foreach(DataRow dr in SourDS.Tables[].Rows)
{
if (drs[]["kj0177a"].ToString() == "上市")
dr["kj0084a"] = "分公司";
else
dr["kj0084a"] = "勘探局";
}
}
return SourDS;
          DataSet ERJIDWS = OperaterClass.SearchData("二级单位列表", "二级单位", "", null, string.Empty);
DataRow[] drs = ERJIDWS.Tables[].Select("kj0172a ='" + "开发部" + "'");
DataTable tb = ERJIDWS.Tables[];
DataRow dr= tb.NewRow();//得到一个和ERJIDWS的DataSet的表的列,一样的DataRow,相当于复制了一行空数据行
dr["kj0172a"] = drs[]["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”的DS
MessageBox.Show(SearchXMDS.Tables[].Rows.Count.ToString());
         this.Cursor = Cursors.WaitCursor;//光标
if (!CheckIsRight()) return;//检查控件的值
bool isTrue = false;//是否成功
DataSet dsSave = Zeda.AssistantClass.DataSetOperator.CreateDS<DB_018车位费收费记录表>();
drcost = dsSave.Tables[].NewRow();
SetSaveDSValue();//设置全局变量DataRow类型drcost的值,drcost为一个空行
dsSave.Tables[].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;//小区ID
drcost["DB0004A"] = this.txtDB0004A.EditValue;//小区名字
drcost["DB0119A"] = this.txtDB0049A.Tag;//车库ID
drcost["DB0049A"] = this.txtDB0049A.EditValue;//车库
}
         DataSet ERJIDWS = OperaterClass.SearchData("二级单位列表", "二级单位", "", null, string.Empty);
DataRow[] drs = ERJIDWS.Tables[].Select("kj0172a ='" + "开发部" + "'");
DataTable tb = ERJIDWS.Tables[];
DataRow dr= tb.NewRow();//得到一个和ERJIDWS的DataSet的表的列,一样的DataRow,相当于复制了一行空数据行
dr["kj0172a"] = drs[]["kj0172a"];//给空数据行的某列赋值
tb.Rows.Add(dr);
DataTable tbe = ERJIDWS.Tables[].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 == - || e.RowIndex == -)
return; if (((DataGridView)sender).Columns[e.ColumnIndex] is DataGridViewLinkColumn) ;//判断单击的单元格是否为datagridviewlinkcolumn,触发事件的使用
{
DataRowView drv = (DataRowView)((DataGridView)sender).Rows[e.RowIndex].DataBoundItem;//sender为dgvItem,e为cell
DataGridViewColumn 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(, url.IndexOf(","));
Spf.Formshow(url);
}
}
}

 protected bool SaveAuditResult(string[] columnName, string[] value, string message)
{
if (this.baseDgvItems.Rows.Count <= )
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 = ; i < columnName.Length; i++)
{
newDR[columnName[i]] = value[i];
}
dt.Rows.Add(newDR);
}
ds.Tables.Add(dt); if (ds == null || ds.Tables.Count == || ds.Tables[].Rows.Count == )
{
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 - ; i >= ; i--)//在datagridview中删除选中行
{
if (baseDgvItems.Rows[i].Cells["cb"].FormattedValue.ToString() == "True")
{
drv = (DataRowView)baseDgvItems.Rows[i].DataBoundItem;
SearchDataSet.Tables[].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 <= )
{
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 - ; i >= ; 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 - ; j >= ; j--)
{
DataRow dr = dt.Rows[j]; for (int i = ; i < DsJJCC.Tables[].Rows.Count; i++)
{ if (dr["Title"].ToString() == DsJJCC.Tables[].Rows[i]["kj0083a"].ToString())//已存在
{
if (dt.Rows.Count > )
{
drindex.Add(j);//将行号加到泛型数据中
}
}
}
}
for (int m = ; 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[] { , "lwolf" });
dt.Rows.Add(new object[] { ,"kkkkk"});
dt.Rows.Add(new object[] { ,"jim" });
dt.Rows.Add(new object[] { ,"test" }); DataTable dtCopy = dt.Copy(); DataView dv = dt.DefaultView;
dv.Sort = "ID";
dtCopy = dv.ToTable();

给DataTable赋值,foreach和index++

           int index = ;
foreach (DataRow dr in SearchDataSet.Tables[].Rows)
{
if (dr["kj0084a"].ToString() == "厂处级")
{
dr["kj0068a"] = Code[index].Remove(Code[index].Length-);
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("查看详细");
}
}

datagridview的数据源的操作

datagridview的数据源的操作

datagridview的数据源的操作

datagridview的数据源的操作的更多相关文章

  1. C&num; 中DataGridView 绑定List&lt&semi;T&gt&semi;做数据源的操作问题

    若想将 List<T>作为DataGridView的数据源,然后后续还想继续操作的话,需要将List<T>赋值给BindingList对象, 然后直接将BindingList赋 ...

  2. C&num; DataGridView绑定数据源的几种常见方式

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

  3. C&num;窗体:关于DataGridView的数据源绑定字符串两个值得注意的问题

    无意间遇到的问题,然后就GOOGLE了下,搜到些资料,总结整理如下(注:是转载的) 1. LINQ的查询结果无法直接作为DataGridView的数据源 DataGridView的DataSource ...

  4. DataGridView绑定数据源

    给DataGridView绑定数据源比較简单,方法主要有两种: 1.直接在控件属性中绑定数据源,这样的方法最简单,但它是直接连接数据库的,这样就和传DataTable的后果差点儿相同了,所以还是尽量避 ...

  5. DataGridView绑定数据源的几种方式

    使用DataGridView控件,可以显示和编辑来自多种不同类型的数据源的表格数据. 将数据绑定到DataGridView控件非常简单和直观,在大多数情况下,只需设置DataSource属性即可.在绑 ...

  6. 【转】DataGridView绑定数据源的几种方式

    第一种:DataSet ds=new DataSet (); this.dataGridView1.DataSource=ds.Table[0]; 第二种:DataTable dt=new DataT ...

  7. vb&period;net中将DataGridView与数据源绑定

    在< .net中将DataGridView内的数据导出为Excel表格>中说了如何导出数据到Excel,今天这篇文章将讲述如何绑定数据源,在控件中显示我们需要的信息. 在敲机房收费系统的时 ...

  8. C&num; 关于DataGridView 绑定数据源时列名窜位置 的处理

    只需要写一句话:dataGridView1.AutoGenerateColumns = false; 代码提示中的解释:获取或设置一个值,该值指示在设置System.Windows.Forms.Dat ...

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

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

随机推荐

  1. &lbrack;js开源组件开发&rsqb;js手机端浮层控件,并有多种弹出小提示,兼容pc端浏览器

    js dialog组件,包含alert和confirm的实现 本组件所有的资源均在github上可以查看源代码 GitHub 本dialog的组件的例子请在这里查看 demo dialog js di ...

  2. virt-XXX

    尽管 virt-manager 是 libvirt 虚拟化 API 的一个首要用户,但有一个越来越庞大的工具生态系统在使用此接口进行虚拟化管理.virt-manager 包提供了一个便捷的 GUI,用 ...

  3. JS不兼容减号&comma;css属性转驼峰写法

    <script> function changeFormat(str) { return str.replace(/-(\w)/g, function(k, r) { return r.t ...

  4. 成员方法与const之间的关系

    const可以放在成员方法的三个地方,前.中.后. 首先考虑在中间: 1.const修饰形参,表示形参是否为const 2.如果const修饰引用(指针指向的对象),可以进行过载,如果不是修饰引用(指 ...

  5. PC110305&sol;UVA10188

    根据我的规律,每天solved3题就感觉不行了~但是今天好像做水题做上瘾了,不过PC的题目尽管水,水得还是可以让人有进步. 这题OJ自动测评真心坑,题目看起来十分简单,测评返回三种可能: Accept ...

  6. ansible基础-安装与配置

    一 安装 1.1 ansible架构 ansible是一个非常简单的自动化部署项目,由python编写并且开源.用于提供自动化云配置.配置文件管理.应用部署.服务编排和很多其他的IT自动化需求. an ...

  7. 通过反射来读取XML格式的ControlTemplate

    在之前的一个WPF项目中,由于设置控件模板在前台xaml中读取失败,由此想到了通过反射的形式来读取该模板,首先将该模板写入一个xml文件中,然后再读取该xml文件,在这里首先介绍一下:资源和嵌入式资源 ...

  8. iOS:自定义导航栏,随着tableView滚动显示和隐藏

    自定义导航栏,随着tableView滚动显示和隐藏 一.介绍 自定义导航栏是APP中很常用的一个功能,通过自定义可以灵活的实现动画隐藏和显示效果.虽然处理系统的导航栏也可以实现,但是这个是有弊端的,因 ...

  9. Protobuffer简介c&num;

    一.Protobuffer和json深度对比 JSON相信大家都知道是什么东西,如果不知道,那可就真的OUT了,GOOGLE一下去.这里就不介绍啥的了. Protobuffer大家估计就很少听说了,但 ...

  10. python学习 02 元组

    元组和列表除了能不能修改外 定义单一元组还需要加逗号