DataTable dataTable = CommonCode.GetCheckData();
DataTable nds = new DataTable();
for (int index = 0; index < dataTable.Rows.Count; index++)
{
if ((Int32)dataTable.Rows[index]["TypeID"] ==Convert.ToInt32( this.txtName.Text.Trim() ))
{
//nds.DataSet
nds.Rows.Add(dataTable.Rows[index]);
}
}
if (nds.Rows.Count > 0)
{
ReportDocument optDoc = new ReportDocument();
optDoc.Load(Server.MapPath("~\\CrystalReport1.rpt"));
optDoc.SetDataSource(nds);
crvDataShow.ReportSource = optDoc;
crvDataShow.Visible = true;
}
here we want to use row in another datatable, but compiler tell me, the row is use by another table, so here, we must create a new row, then add to new datatable.here for example:
DataTable dataTable = CommonCode.GetCheckData();
DataTable nds = dataTable.Clone();//this is a key step for me, keep the same struct with old datatable
for (int index = 0; index < dataTable.Rows.Count; index++)
{
if ((Int32)dataTable.Rows[index]["TypeID"] ==Convert.ToInt32( this.txtName.Text.Trim() ))
{
DataRow aDataRow = nds.NewRow();
//foreach (DataColumn aDataColumn in dataTable.Columns )
//{
// aDataRow[aDataColumn.ColumnName] = dataTable.Rows[index][aDataColumn.ColumnName];
//}
aDataRow.ItemArray = dataTable.Rows[index].ItemArray;
nds.Rows.Add(aDataRow);
}
}