怎么样将DataGrid.Items中的一行记录添加到一个新的DataTable中去 能不能将 DataGrid.Items中的一行记录 添加到DataTable中 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DataTable objDt = new DataTable(); objDt.Columns.Add("NAME",typeof(string)); objDt.Columns.Add("AGE",typeof(string));objDt.Columns.Add("SEX",typeof(string));DataRow objDr = objDt.NewRow();objDr["NAME"] = dgList.Items[i].Cells[1].Text;objDr["AGE"] = dgList.Items[i].Cells[2].Text;objDr["SEX"] = dgList.Items[i].Cells[3].Text;objDt.Rows.Add(objDr); 可以,读出item,然后就往datatable里添加 DataTable objDt = new DataTable(); objDt.Columns.Add("NAME",typeof(string)); objDt.Columns.Add("AGE",typeof(string)); objDt.Columns.Add("SEX",typeof(string)); DataRow objDr = objDt.NewRow(); objDr["NAME"] = dgList.Items[i].Cells[1].Text; objDr["AGE"] = dgList.Items[i].Cells[2].Text; objDr["SEX"] = dgList.Items[i].Cells[3].Text; objDt.Rows.Add(objDr); 能不能把DataGridItem转成DataRow什么的 一个个加谁都会,我是要看看有什么方便点的,DataGridItem也是一条记录集,能不能把她转成DataRow后一次向相同Datatable架构表中添加 可以将作为数据源的datatable存起来,然后添加的时候根据索引号直接取数据源的datarow,放到新table里边。不过耗内存 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){ if (e.Row.RowType == DataControlRowType.DataRow) { if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate) { DataTable objDt = new DataTable(); objDt.Columns.Add("NAME",typeof(string)); objDt.Columns.Add("AGE",typeof(string)); objDt.Columns.Add("SEX",typeof(string)); DataRow objDr = objDt.NewRow(); objDr["NAME"] = e.Items.Cells[1].Text; objDr["AGE"] = e.Items.Cells[2].Text; objDr["SEX"] = e.Items.Cells[3].Text; objDt.Rows.Add(objDr); } }} protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { if (e.Row.RowState == DataControlRowState.Normal ¦ ¦ e.Row.RowState == DataControlRowState.Alternate) { DataTable objDt = new DataTable(); objDt.Columns.Add("NAME",typeof(string)); objDt.Columns.Add("AGE",typeof(string)); objDt.Columns.Add("SEX",typeof(string)); DataRow objDr = objDt.NewRow(); objDr["NAME"] = e.Items.Cells[1].Text; objDr["AGE"] = e.Items.Cells[2].Text; objDr["SEX"] = e.Items.Cells[3].Text; objDt.Rows.Add(objDr); } } 这不是全都添加了吗?我只要选定行的} 可以将作为数据源的datatable存起来, 然后添加的时候根据索引号直接取数据源的datarow,放到新table里边。 不过耗内存ddt.Rows.Add(dt.Rows[dgMaterialMst.Items[row].DataSetIndex]);是这样吗?运行会报错,那错了? 写一个foreach或者for循环,利用[index]加入即可。 DataTable dtNew = new DataTable();DataRow drNew = dtNew.NewRow();for (int iItems = 0; iItems < gvSI.Rows[0].Cells.Count; iItems++){ dtNew.Columns.Add(iItems.ToString(), typeof(string)); drNew[iItems.ToString()] = gvSI.Rows[0].Cells[iItems].Text;}dtNew.Rows.Add(drNew); (DataRow)dgMaterialMst.Items[row].DataItem;这样转换能加到DataTable中去吗? DataTable dtNew = new DataTable();DataRow drNew = dtNew.NewRow();for (int iItems = 0; iItems < gvSI.Rows[0].Cells.Count; iItems++){ dtNew.Columns.Add(iItems.ToString(), typeof(string)); drNew[iItems.ToString()] = gvSI.Rows[0].Cells[iItems].Text;}dtNew.Rows.Add(drNew);我是用vs 2005测试的,2003我都没怎么用过。但原理应该一样的。我试了DataRow dr = (DataRow)gvSI.Rows[0];这样是不行的。你可以用(DataRow)dgMaterialMst.Items[row].DataItem; 试一下啊我觉得写的上面这个思路应该可以吧! ddt.Rows.Add(dt.Rows[dgMaterialMst.Items[row].DataSetIndex]); ddt是你目标datatabledt是你数据源dgMaterialMst是你的datagrid.现在的问题就是你怎么取当前选择的行号。你是怎么选择的?如果row是你datagrid的当前选择的行号那么你就直接ddt.Rows.Add(dt.Rows[row]); 求 cookie 设置问题 distlist里的按钮,如果用服务器按钮就会刷新下,如果用浏览器按钮就会后台取不到值 自动关闭窗口 datalist中有td,怎么设置 AlternatingItemStyle 的交替颜色? 收集JS动态生成的 textbox 求助:SQL如何写 当前页调用response.redirect的问题 一个简单的问题? Aspx如何做出很漂亮的网页,举几个例子吧! 将前台获取到的字符串动态转换类型,复杂类型该使用什么方式解析? 上传文件出错:点击刷新后数据库中有两条相同的记录 微软ajaxcontroltoolkit中的autocomplete控件如何用?
objDt.Columns.Add("NAME",typeof(string));
objDt.Columns.Add("AGE",typeof(string));
objDt.Columns.Add("SEX",typeof(string));
DataRow objDr = objDt.NewRow();
objDr["NAME"] = dgList.Items[i].Cells[1].Text;
objDr["AGE"] = dgList.Items[i].Cells[2].Text;
objDr["SEX"] = dgList.Items[i].Cells[3].Text;
objDt.Rows.Add(objDr);
objDt.Columns.Add("NAME",typeof(string));
objDt.Columns.Add("AGE",typeof(string));
objDt.Columns.Add("SEX",typeof(string));
DataRow objDr = objDt.NewRow();
objDr["NAME"] = dgList.Items[i].Cells[1].Text;
objDr["AGE"] = dgList.Items[i].Cells[2].Text;
objDr["SEX"] = dgList.Items[i].Cells[3].Text;
objDt.Rows.Add(objDr);
然后添加的时候根据索引号直接取数据源的datarow,放到新table里边。
不过耗内存
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
{
DataTable objDt = new DataTable();
objDt.Columns.Add("NAME",typeof(string));
objDt.Columns.Add("AGE",typeof(string));
objDt.Columns.Add("SEX",typeof(string));
DataRow objDr = objDt.NewRow();
objDr["NAME"] = e.Items.Cells[1].Text;
objDr["AGE"] = e.Items.Cells[2].Text;
objDr["SEX"] = e.Items.Cells[3].Text;
objDt.Rows.Add(objDr);
}
}}
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.RowState == DataControlRowState.Normal ¦ ¦ e.Row.RowState == DataControlRowState.Alternate)
{
DataTable objDt = new DataTable();
objDt.Columns.Add("NAME",typeof(string));
objDt.Columns.Add("AGE",typeof(string));
objDt.Columns.Add("SEX",typeof(string));
DataRow objDr = objDt.NewRow();
objDr["NAME"] = e.Items.Cells[1].Text;
objDr["AGE"] = e.Items.Cells[2].Text;
objDr["SEX"] = e.Items.Cells[3].Text;
objDt.Rows.Add(objDr);
}
}
这不是全都添加了吗?我只要选定行的
}
然后添加的时候根据索引号直接取数据源的datarow,放到新table里边。
不过耗内存ddt.Rows.Add(dt.Rows[dgMaterialMst.Items[row].DataSetIndex]);
是这样吗?运行会报错,那错了?
DataTable dtNew = new DataTable();
DataRow drNew = dtNew.NewRow();
for (int iItems = 0; iItems < gvSI.Rows[0].Cells.Count; iItems++)
{
dtNew.Columns.Add(iItems.ToString(), typeof(string));
drNew[iItems.ToString()] = gvSI.Rows[0].Cells[iItems].Text;
}
dtNew.Rows.Add(drNew);
这样转换能加到DataTable中去吗?
DataTable dtNew = new DataTable();
DataRow drNew = dtNew.NewRow();
for (int iItems = 0; iItems < gvSI.Rows[0].Cells.Count; iItems++)
{
dtNew.Columns.Add(iItems.ToString(), typeof(string));
drNew[iItems.ToString()] = gvSI.Rows[0].Cells[iItems].Text;
}
dtNew.Rows.Add(drNew);
我是用vs 2005测试的,2003我都没怎么用过。
但原理应该一样的。
我试了
DataRow dr = (DataRow)gvSI.Rows[0];
这样是不行的。你可以用(DataRow)dgMaterialMst.Items[row].DataItem; 试一下啊
我觉得写的上面这个思路应该可以吧!
dt是你数据源
dgMaterialMst是你的datagrid.现在的问题就是你怎么取当前选择的行号。
你是怎么选择的?如果row是你datagrid的当前选择的行号那么你就直接
ddt.Rows.Add(dt.Rows[row]);