我正在声明一个类似于以下内容的 SQL 字符串:
string SQL = "SELECT Column1, Column2, Column3, Date1, Date2 FROM Somewhere";
列数可能会因情况而异,并且日期可以有不同的名称,例如 StartDate、InterestDate 等。
我想要做的是将其绑定(bind)到 ASP.NET Repeater 并为上面的示例创建一个如下表:
<table>
<tr>
<th>Column1</th>
<th>Column2</th>
<th>Column3</th>
<th>Date1</th>
<th>Date2</th>
</tr>
<tr>
Rows of values...
</tr>
</table>
我可以将数据绑定(bind)到中继器并使用 Eval,但这取决于固定数量的列和列名称。这可以通过编程方式完成吗?
最佳答案
如果您使用 GridView,则可以将 AutoGenerate columns 属性设置为 true(默认情况下为 true),然后将 GridView 绑定(bind)到您的数据。
制作非常简单,您可能需要使用 SQLDataSource控制。
asp.net site概述了 ASP.NET 中的数据绑定(bind)(使用 ObjectDataSource,但概念完全相同)。本页还介绍了一些自定义 GridView 的方法。
更新:以下是如何处理 rowdatabound 事件以格式化日期列的示例(根据其他答案的评论)。这可能可以做得更好,但这应该可以帮助您开始。
protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataRowView rowView = (DataRowView)e.Row.DataItem;
for (int i = 0; i < rowView.Row.ItemArray.Length; i++)
{
DateTime? tmpDate = rowView[i] as DateTime?;
if (tmpDate.HasValue)
{
if (tmpDate.Value.Second > 0)
e.Row.Cells[i].Text = tmpDate.Value.ToShortTimeString();
else
e.Row.Cells[i].Text = tmpDate.Value.ToShortDateString();
}
}
}
关于c# - 如何使用重复器以编程方式添加未知数量的列,其中某些列是在运行时在 SQL 字符串中声明的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/922250/