Це код, який я працював для перетворення рядків уСтовпці. Проблема в тому, що я отримав очікуваний висновок, коли я зберігаю Контрольно-пропускний пункт у коді, але не на екрані браузера. Я прив'язую вихідний 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>