gpt4 book ai didi

c# - 如何使用转发器以编程方式添加未知数量的列,其中某些列在运行时在 SQL 字符串中声明?

转载 作者:行者123 更新时间:2023-11-30 21:24:56 27 4
gpt4 key购买 nike

我正在声明一个类似于以下内容的 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)到 Repeater 并使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com