Dataset and datatable are the lifelines of asp.net (c#). Without data table & dataset we are short, inflexible, expensive, unmanageable and less availability. Recently I dealt greatly with transposed datatable in C#. Data was throwing me in vertical and I need to manipulate data back into horizontally. This is very time consuming to manage the data properly according to our situation, so it needs me to manage transpose datatable in c# according to situation; moreover I motivated to share this one in detail. I have provided steps how can we generate transpose datatable in c# as below:
using System.Data;
Step 1: In first step, I have added some required .net controls to view transpose datatable in Gridview.
Step 2: I have added some dummy data into inputTable:
Step 3: Here I have written complete method GenerateTransposedTableinCsharp to generate transpose datatable in C#.
Step 4: Now, I have written completely code in code behind and HTML. Next I am ready to hit button “Hit Me!” to bind results into GridView control in C#.
Step 5:After hitting the button, now transpose table perfectly showing in gridview.
Above key steps show how can we generate transpose datatable in c#, if any help more required on it, I am very happy to assist my digital world.
using System.Data;
Step 1: In first step, I have added some required .net controls to view transpose datatable in Gridview.
Step 2: I have added some dummy data into inputTable:
protectedvoidtc_button_Click(object sender, EventArgs e)
{
DataTable inputTable = newDataTable();
inputTable.TableName = "InputTable";
inputTable.Columns.Add("Name", typeof(System.String));
inputTable.Columns.Add("Value_Text", typeof(System.String));
inputTable.Rows.Add("Table_ID", "1");
inputTable.Rows.Add("Country", "India");
inputTable.Rows.Add("Country_Flag", "false");
inputTable.Rows.Add("ReciveID", "2");
inputTable.Rows.Add("Campaign_ID", "3");
inputTable.Rows.Add("Table_ID", "2");
inputTable.Rows.Add("Country", "USA");
inputTable.Rows.Add("Country_Flag", "false");
inputTable.Rows.Add("ReciveID", "21");
inputTable.Rows.Add("Campaign_ID", "22");
inputTable.Rows.Add("Table_ID", "3");
inputTable.Rows.Add("Country", "Canada");
inputTable.Rows.Add("Country_Flag", "false");
inputTable.Rows.Add("ReciveID", "3");
inputTable.Rows.Add("Campaign_ID", "31");
inputTable.Rows.Add("Table_ID", "4");
inputTable.Rows.Add("Country", "Austria");
inputTable.Rows.Add("Country_Flag", "false");
inputTable.Rows.Add("ReciveID", "4");
inputTable.Rows.Add("Campaign_ID", "41");
DataTable transposedTable = GenerateTransposedTableinCsharp(inputTable);
transposedTable.TableName = "TC-TransponsedTable";
transposedTable.Columns.Remove("Name");
tc_gvresults.DataSource = transposedTable;
tc_gvresults.Visible = true;
tc_gvresults.DataBind();
}Step 3: Here I have written complete method GenerateTransposedTableinCsharp to generate transpose datatable in C#.
privateDataTableGenerateTransposedTableinCsharp(DataTableinputTable)
{
DataTable outputTable = newDataTable();
outputTable.Columns.Add(inputTable.Columns[0].ColumnName.ToString());
foreach (DataRowinRow in inputTable.Rows)
{
string newColName = inRow[0].ToString();
DataColumnCollection columns = outputTable.Columns;
if (columns.Contains(newColName))
{
// do nothing
}
else
{
outputTable.Columns.Add(newColName);
}
}
Int32 iColCount = Convert.ToInt32(iTotalRows(inputTable));
string _Col = string.Empty;
string _ColRep = string.Empty;
Int32 _rCount = 0;
Int32 _FirstRow = 0;
Int32 _NewRow = 0;
for (int rCount = 0; rCount <= iColCount; rCount++)
{
DataRow newRow = outputTable.NewRow();
newRow[0] = inputTable.Columns[1].ColumnName.ToString();
for (intcCount = _rCount; _rCount <= inputTable.Rows.Count - 1; cCount++)
{
if (_FirstRow == 0)
{
_ColRep = inputTable.Rows[cCount][0].ToString();
}
if (_FirstRow > 0)
{
_Col = inputTable.Rows[cCount][0].ToString();
}
_FirstRow += 1;
if (_ColRep == _Col)
{
_rCount = cCount;
_FirstRow = 0;
_NewRow = 0;
_Col = "";
break;
}
else
{
string colValue = inputTable.Rows[cCount][1].ToString();
newRow[_NewRow + 1] = colValue;
}
_rCount = _rCount + 1;
_NewRow = _NewRow + 1;
}
outputTable.Rows.Add(newRow);
}
return outputTable;
}
I have written under above code a helper method to write rows to columns: privatedecimaliTotalRows(DataTable inputTable)
{
int _FirstRow = 0;
string _ColRep = "";
string _Col = "";
Decimal _RetRows = 0;
Int32 _TotalRecs = Convert.ToInt32(inputTable.Rows.Count - 1);
for (int cCount = 0; cCount <= inputTable.Rows.Count - 1; cCount++)
{
if (_FirstRow == 0)
{
_ColRep = inputTable.Rows[cCount][0].ToString();
}
if (_FirstRow > 0)
{
_Col = inputTable.Rows[cCount][0].ToString();
}
if (_ColRep == _Col)
{
Int32iTotRow = cCount;
iTotRow = iTotRow + 1;
//string _RRows;
_RetRows = Convert.ToDecimal(Convert.ToDecimal(_TotalRecs) / Convert.ToDecimal(iTotRow));
_RetRows = Math.Ceiling(_RetRows);
break;
}
_FirstRow += 1;
}
return _RetRows;
}
Step 4: Now, I have written completely code in code behind and HTML. Next I am ready to hit button “Hit Me!” to bind results into GridView control in C#.
Step 5:After hitting the button, now transpose table perfectly showing in gridview.
Above key steps show how can we generate transpose datatable in c#, if any help more required on it, I am very happy to assist my digital world.