/ / Не вдалося перетворити рядки на колонки в gridview в ASP.NET - c #, asp.net

Не вдається перетворити рядки в стовпці в gridview в ASP.NET - c #, asp.net

Це код, який я працював для перетворення рядків уСтовпці. Проблема в тому, що я отримав очікуваний висновок, коли я зберігаю Контрольно-пропускний пункт у коді, але не на екрані браузера. Я прив'язую вихідний datatable gridview, де джерело даних є правильним, але не правильний результат у виході екрану?

     DataTable outputTable = new DataTable();

// Add columns by looping rows

// Header row"s first column is same as in inputTable
outputTable.Columns.Add(inputTable.Columns[0].ColumnName.ToString());

// Header row"s second column onwards, "inputTable"s first column taken
foreach (DataRow inRow in inputTable.Rows)
{
string newColName = inRow[0].ToString();
outputTable.Columns.Add(newColName);
}

// Add rows by looping columns
for (int rCount = 1; rCount <= inputTable.Columns.Count -1; rCount++)
{
DataRow newRow = outputTable.NewRow();

// First column is inputTable"s Header row"s second column
newRow[0] = inputTable.Columns[rCount].ColumnName.ToString();
for (int cCount = 0; cCount <= inputTable.Rows.Count - 1; cCount++)
{
string colValue = inputTable.Rows[cCount][rCount].ToString();
newRow[cCount + 1] = colValue;
}
outputTable.Rows.Add(newRow);

}
return outputTable;

Відповіді:

0 для відповіді № 1

Ось як я використовував ваш код, і він працює нормально

<asp:GridView ID="testGrid" AutoGenerateColumns="true" runat="server"></asp:GridView>

і код позаду з зразковими даними є наступним

    private DataTable createSampleDataTable()
{
DataTable dt = new DataTable();

//Creating Columns
dt.Columns.Add(new DataColumn("ID",typeof(int)));
dt.Columns.Add(new DataColumn("Name",typeof(string)));
dt.Columns.Add(new DataColumn("DOB", typeof(DateTime)));

//Creating Sample Rows
DataRow dr;
for (int i = 1; i < 5; i++)
{
dr = dt.NewRow();
dr["ID"] = i;
dr["Name"] = String.Format("Name {0}",i);
dr["DOB"] = new DateTime(2014, i, i);
dt.Rows.Add(dr);
}

return dt;
}

public void BindTestGrid()
{
DataTable inputTable = createSampleDataTable();
DataTable outputTable = new DataTable();

// Add columns by looping rows

// Header row"s first column is same as in inputTable
outputTable.Columns.Add(inputTable.Columns[0].ColumnName.ToString());

// Header row"s second column onwards, "inputTable"s first column taken
foreach (DataRow inRow in inputTable.Rows)
{
string newColName = inRow[0].ToString();
outputTable.Columns.Add(newColName);
}

// Add rows by looping columns
for (int rCount = 1; rCount <= inputTable.Columns.Count - 1; rCount++)
{
DataRow newRow = outputTable.NewRow();

// First column is inputTable"s Header row"s second column
newRow[0] = inputTable.Columns[rCount].ColumnName.ToString();
for (int cCount = 0; cCount <= inputTable.Rows.Count - 1; cCount++)
{
string colValue = inputTable.Rows[cCount][rCount].ToString();
newRow[cCount + 1] = colValue;
}
outputTable.Rows.Add(newRow);

testGrid.DataSource = outputTable;
testGrid.DataBind();
}
}

Я додав розмітку сітчастого виду, яку ви вказали, і він також показує два рядки, які є бажаними. Оскільки в dataTable є три рядки, перші рядки є рядком заголовків, а два інші рядки є рядками даних.

<asp:GridView ID="gvlistmonoprix" runat="server" ShowFooter="True"
AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" Width="640px">
<Columns>
<asp:TemplateField HeaderText="Combo">
<ItemTemplate>
<asp:DropDownList ID="combolist1" runat="server" Height="22px" Width="111px" AutoPostBack="true">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="50">
<ItemTemplate>
<asp:TextBox ID="size50" Width="50px" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>