Я использую таблицу 12 на 31 день, используя GridView.Где я могу выбрать на ячейке одним нажатием кнопки.Я уже реализовал это как-то что-то не так с GridView, он не отображал последнюю строку, которая является строкой декабря.Я также использовал жестко закодированный тег html в ячейке для рендеринга кнопки.Но это также хорошо, если динамически генерируется контролем?А также, если строка должна соответствовать дням месяца, например: в феврале будет отображаться 28 кнопок.
Нажмите здесь, чтобы загрузить текущие данные в GridView.
protected void ButtonFilter_Click(object sender, EventArgs e)
{
DataTable dataTable = new DataTable();
dataTable.Columns.AddRange(new DataColumn[32]
{
new DataColumn("Month"),
new DataColumn("Day1"),
new DataColumn("Day2"),
new DataColumn("Day3"),
new DataColumn("Day4"),
new DataColumn("Day5"),
new DataColumn("Day6"),
new DataColumn("Day7"),
new DataColumn("Day8"),
new DataColumn("Day9"),
new DataColumn("Day10"),
new DataColumn("Day11"),
new DataColumn("Day12"),
new DataColumn("Day13"),
new DataColumn("Day14"),
new DataColumn("Day15"),
new DataColumn("Day16"),
new DataColumn("Day17"),
new DataColumn("Day18"),
new DataColumn("Day19"),
new DataColumn("Day20"),
new DataColumn("Day21"),
new DataColumn("Day22"),
new DataColumn("Day23"),
new DataColumn("Day24"),
new DataColumn("Day25"),
new DataColumn("Day26"),
new DataColumn("Day27"),
new DataColumn("Day28"),
new DataColumn("Day29"),
new DataColumn("Day30"),
new DataColumn("Day31")
});
DataRow dataRow;
var months = new string[] { "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" };
var button = new Button
{
ID = "ButtonCell",
Text = ""
};
for (int i = 0; i < comparePrices.Count; i++)
{
dataRow = dataTable.NewRow();
dataRow["Month"] = months[i];
for (int j = 0; j < comparePrices[i].Pricings.Count; j++)
{
// Load the here.
//dataRow[string.Format("Day{0}", j + 1)] = comparePrices[i].Pricings[j].Price;
}
dataTable.Rows.Add(dataRow);
}
ListOfComparePrice = comparePrices;
GridViewPricing.DataSource = dataTable;
GridViewPricing.DataBind();
}
Вот RowDataBoundкод концаGridViewPricing.Rows.Count имеет 12. Количество столбцов 32.
protected void GridViewPricing_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (GridViewRow row in GridViewPricing.Rows)
{
for (int i = 0; i < GridViewPricing.Columns.Count; i++)
{
if (i != 0)
{
row.Cells[i].Text = string.Format("<div><input type='button' style='border: 0; display:block; padding:4px; width:100%; height:100%;' id={0}/></div>", "hi");
}
}
}
}
}
Также вместо жестко закодированного HTML.Я хотел бы использовать динамический код в серверной части для генерации кнопки.
var button = new Button
{
ID = "ButtonCell",
Text = ""
};
Вывод:
введите описание изображения здесь