如题,我在尝试为新建行赋值时失败,不提示错误,就是无法赋值
DataRow dr = dt.NewRow();
dr["要素类型"] = GElist[i].ElName;
dt.Rows.Add(dr);
等号右边的值是“线”,结果得到的单元格的值是“要素类型”……
疯了……
DataRow dr = dt.NewRow();
dr["要素类型"] = GElist[i].ElName;
dt.Rows.Add(dr);
等号右边的值是“线”,结果得到的单元格的值是“要素类型”……
疯了……
3 {
4 DataTable dt = new DataTable("OneEmployee");
5 dt.Columns.Add("Caption", System.Type.GetType("System.String"));
6 dt.Columns.Add("Department", System.Type.GetType("System.String"));
8
9 DataRow dr = dt.NewRow();
10 dr["Caption"] = list[i].Name;
11 dr["Department"] = list[i].Department;
14 dt.Rows.Add(dr);
15
17 }
{
List<ZhuanJiaVo> list = new List<ZhuanJiaVo>();
ZhuanJiaVo zhuaJia = null;
DataTable dt = null;
DataTable objDataTable = null;
DataTable dataTable = new DataTable();
dataTable.Columns.Add(new DataColumn("JiZhun", typeof(string)));
dataTable.Columns.Add(new DataColumn("ZhuanJia_ID", typeof(string)));
dataTable.Columns.Add(new DataColumn("ZhuanJia_Name", typeof(string)));
dataTable.Columns.Add(new DataColumn("ZhuanYe", typeof(string)));
try
{
SearchBuilder sb = null;
dt = new DataTable();
sb = new SearchBuilder("select * from [GL].ShiJian_WuZhi");
sb.Add("YingJiShiJianXinXiId", OperType.Equal, HttpContext.Current.Session["AppId"]);
dt = DbHelper.GetDataTable(AppBase.DbDefault.Connection, sb);
for (int i = 0; i < dt.Rows.Count; i++)
{
sb = new SearchBuilder("select * from [SJK].[V_ZhuanJia_XinXi_ZhuanJia_WuZhi_TeXing]");
sb.Add("T_WuZhi_ID", OperType.Equal, dt.Rows[i]["T_WuZhi_ID"]);
DataTable dt1 = new DataTable();
dt1 = DbHelper.GetDataTable(AppBase.DbDefault.Connection, sb);
foreach (DataRow dr in dt1.Rows)
{
DataRow dataRow = dataTable.NewRow();
dataRow["JiZhun"] = "危险物质";
dataRow["ZhuanJia_ID"] = dr["ZhuanJia_ID"];
dataRow["ZhuanJia_Name"] = dr["ZhuanJia_Name"];
dataRow["ZhuanYe"] = dr["ZhuanYe"];
dataTable.Rows.Add(dataRow);
}
DataTable dt2 = new DataTable();
sb = new SearchBuilder("select * from [SJK].[V_PollutionType_ZjType_ZhuanJia_XinXi]");
sb.Add("YingJiShiJianXinXiId", OperType.Equal, 38);
dt2 = DbHelper.GetDataTable(AppBase.DbDefault.Connection, sb);
foreach (DataRow item in dt2.Rows)
{
DataRow dataRow = dataTable.NewRow();
dataRow["JiZhun"] = "事件污染类型";
dataRow["ZhuanJia_ID"] = item["ZhuanJia_ID"];
dataRow["ZhuanJia_Name"] = item["ZhuanJia_Name"];
dataRow["ZhuanYe"] = item["ZhuanYe"];
dataTable.Rows.Add(dataRow);
}
}
if (dataTable.Rows.Count > 0)
{
DataView dv = new DataView(dataTable);
objDataTable = new DataTable();
objDataTable = dv.ToTable(true, "JiZhun", "ZhuanJia_ID", "ZhuanJia_Name", "ZhuanYe");
foreach (DataRow dr in objDataTable.Rows)
{
zhuaJia = new ZhuanJiaVo();
zhuaJia.ZhuanJia_ID = DataHelper.ToInt(dr["ZhuanJia_ID"]);
zhuaJia.ZhuanJia_Name = DataHelper.ToString(dr["ZhuanJia_Name"]);
zhuaJia.JiZhun = DataHelper.ToString(dr["JiZhun"]);
zhuaJia.ZhuanYe = DataHelper.ToString(dr["ZhuanYe"]);
list.Add(zhuaJia);
}
//根据专家名字去重复
//for (int i = 0; i < dataTable.Rows.Count - 1; i++)
//{
//if (dataTable.Rows[i]["ZhuanJia_Name"].ToString().Trim() == dataTable.Rows[i + 1]["ZhuanJia_Name"].ToString().Trim())
//{
// dataTable.Rows.RemoveAt(i);
// dataTable.Rows[i]["JiZhun"] = "危险物质,事件污染类型";
// dataTable.AcceptChanges();
// i--;
//}
//}
}
}
catch (Exception ex)
{
AppBase.AddException(this, "根据当前事件推荐相对应的专家时出现异常:" + ex.Message);
}
return list;
}
希望对你有帮助
private void CreateNewDataRow()
{
// Use the MakeTable function below to create a new table.
DataTable table;
table = MakeNamesTable(); // Once a table has been created, use the
// NewRow to create a DataRow.
DataRow row;
row = table.NewRow(); // Then add the new row to the collection.
row["fName"] = "John";
row["lName"] = "Smith";
table.Rows.Add(row); foreach(DataColumn column in table.Columns)
Console.WriteLine(column.ColumnName);
dataGrid1.DataSource=table;
}private DataTable MakeNamesTable()
{
// Create a new DataTable titled 'Names.'
DataTable namesTable = new DataTable("Names"); // Add three column objects to the table.
DataColumn idColumn = new DataColumn();
idColumn.DataType = System.Type.GetType("System.Int32");
idColumn.ColumnName = "id";
idColumn.AutoIncrement = true;
namesTable.Columns.Add(idColumn); DataColumn fNameColumn = new DataColumn();
fNameColumn.DataType = System.Type.GetType("System.String");
fNameColumn.ColumnName = "Fname";
fNameColumn.DefaultValue = "Fname";
namesTable.Columns.Add(fNameColumn); DataColumn lNameColumn = new DataColumn();
lNameColumn.DataType = System.Type.GetType("System.String");
lNameColumn.ColumnName = "LName";
namesTable.Columns.Add(lNameColumn); // Create an array for DataColumn objects.
DataColumn [] keys = new DataColumn [1];
keys[0] = idColumn;
namesTable.PrimaryKey = keys; // Return the new DataTable.
return namesTable;
}
DataRow dr = dt.NewRow();
dr["要素类型"] = GElist[i].ElName;//你确定这里的值是“线”?
dt.Rows.Add(dr);结果得到的单元格的值是“要素类型”
要得到你的单元格的值dr["要素类型"].ToString();//看看这个值是啥了一个Demopublic static DataTable ConvertRank(string WhereString, string FieldName)
{
List<UserField> allField = UserFieldDB.GetAllList("");//获得数据库中所有的列的信息
StringBuilder baseField = new StringBuilder(string.Empty);//用于存储需要显示的基础字段的列
List<UserField> baseFields = new List<UserField>();//基础字段的列对象 在构建dt的时候用到
string[] FieldNames = FieldName.Split('|');
List<string> AdditionalField = new List<string>();//存储非基础字段 #region 分离出基础列和非基础列
for (int i = 0; i < FieldNames.Length; i++)
{
if (FieldNames[i] != "")
{
foreach (UserField item in allField)
{
if (item.FieldName == FieldNames[i])
{
if (item.IsSynchro)//将需要显示列中的基础列单独出来,用于查询基础数据表
{
string baseColumn = item.SynchronousSource;//根据数据源获得基础列名
baseColumn = baseColumn.Contains('.') ? baseColumn.Substring(baseColumn.LastIndexOf('.') + 1, baseColumn.Length - baseColumn.LastIndexOf('.') - 1) : baseColumn;
item.SynchronousSource = baseColumn;//为使下面的绑定顺利进行 在此修改了基础字段的源数据 张辉 2011.12.16 修改
baseField.Append(baseColumn);
baseField.Append(",");
baseFields.Add(item);//记录基础列 构建dt时需要用到
}
else
{
AdditionalField.Add(FieldNames[i].ToString());
}
}
}
}
}
#endregion //获得需要显示的基础列的数据
DataTable baseData = FieldValueDB.GetBaseData(baseField.ToString().Substring(0, baseField.Length > 0 ? baseField.Length - 1 : 0), FieldValueDB.GetAllUserids(WhereString));
DataTable dt = new DataTable();//新创建内存表 用于存储转化后的结果 为什么不知用baseData?列名发生了变化,baseData中都是基础字段列名
dt.Columns.Add("UId");
foreach (var item in baseFields)//将基础字段的列名添加到新的内存表中
{
dt.Columns.Add(item.FieldName);
}
foreach (DataRow item in baseData.Rows)//将基本表中的数据先放到内存表中
{
DataRow newRow = dt.NewRow();
newRow["UId"] = item["MemberID"].ToString();
foreach (UserField itemFild in baseFields)
{
newRow[itemFild.FieldName] = item[itemFild.SynchronousSource];
}
dt.Rows.Add(newRow);
} foreach (var itemColumn in AdditionalField)//将非基础字段的列名加入到内存表中
{
dt.Columns.Add(itemColumn);
}
//获得所有扩展列中的数据
DataTable allData = FieldValueDB.GetAllUsers(WhereString).Tables[0];
if (baseData == null || allData == null)
{
return null;
} #region 将非基础字段的数据添加到内存表中
int j = 0;
for (int i = 0; i < allData.Rows.Count; i++)
{
DataRow DataItem = allData.Rows[i];
if (DataItem["UId"].ToString() == dt.Rows[j]["UId"].ToString())
{
if (dt.Columns.Contains(DataItem["FieldName"].ToString()))
{
dt.Rows[j][DataItem["FieldName"].ToString()] = DataItem["Content"].ToString();
}
}
else
{
for (int k = j; k < baseData.Rows.Count; k++)
{
if (DataItem["UId"].ToString() == dt.Rows[k]["UId"].ToString())
{
if (dt.Columns.Contains(DataItem["FieldName"].ToString()))
{
dt.Rows[k][DataItem["FieldName"].ToString()] = DataItem["Content"].ToString();
}
j = k;
break;
}
}
}
}
#endregion return dt;
}
DataTable dataTable = new DataTable();
dataTable.Columns.Add(new DataColumn("ID", typeof(string)));
dataTable.Columns.Add(new DataColumn("Name", typeof(string)));
然后用一个DataTable接收查询的值
DataTable dt=new DataTable();
SearchBuilder sb = new SearchBuilder("select ID,Name from UserInfo");
DataTable dt= new DataTable();
dt = DbHelper.GetDataTable(AppBase.DbDefault.Connection, sb);
然后foreach
foreach (DataRow dr in dt1.Rows)
{
DataRow dataRow = dataTable.NewRow();
dataRow["ID"] = dr["ID"];
dataRow["Name"] = dr["Name"];
dataTable.Rows.Add(dataRow);
}
按这种绝对没问题的
for(int i = 0; i < dt.Rows.Count; i++)
{
DataRow dataRow = dataTable.NewRow();
dataRow["ID"] = dt.Rows[i]["ID"];
dataRow["Name"] = dt.Rows[i]["Name"];
dataTable.Rows.Add(dataRow);
}
上个回答这一句
foreach (DataRow dr in dt1.Rows)
dt1应该是dt原来写的代码改了下