作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
您好,我有一个数据集,其中一个表有 5 列填充来自数据库的数据。
当我运行应用程序数据表包含超过 50 行时,我想在从数据库获取数据后更新数据表的值。我的要求是
我正在使用 PUSH 方法在 asp.net 的 Crystal 报表中使用这个数据集。
在这里我想我应用数据表中存在的行的一个循环并相应地更新单元格。但我正在寻找任何直接更新方法?
请帮我解决以上两个问题?
最佳答案
遍历行,边走边更新值绝对是一种解决方案,而且非常简单:
foreach (DataRow row in table.Rows)
{
if (row.IsNull("foo")) row["foo"] = "-";
if (row.IsNull("bar")) row["bar"] = "-";
row["date"] = ((DateTime)row["date"]).Date;
}
或者,您可以使用 expressions 在表中创建新列自动生成内容:
table.Columns.Add("foo_dash", typeof(string), "IsNull(foo, '-')");
table.Columns.Add("bar_dash", typeof(string), "IsNull(bar, '-')");
(我不知道 ADO.NET 中的日期函数,所以你必须自己弄清楚最后一个函数。)
您已经标记了您的帖子 ASP.NET,所以我想假设您要将 DataTable
绑定(bind)到一些多记录数据控件(GridView
、Repeater
等)。如果是这种情况,最好在数据绑定(bind)期间进行转换:
protected void theGrid_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
var data = e.DataItem as DataRowView;
if (data != null)
{
if (data.Row.IsNull("foo")) e.Row.Cells[0] = "-";
if (data.Row.IsNull("bar")) e.Row.Cells[0] = "-";
}
}
虽然这似乎需要更多的代码,但它也为您提供了更大的灵 active 。示例:
if (data.Row.IsNull("importantField")) e.Row.CssClass = "error";
在 GridView
中,可以使用 DataFormatString
来格式化日期在列声明中:
<asp:BoundField DataField="data" DataFormatString="{0:d}" />
数据绑定(bind) Repeater
时类似:
<%# Eval("date", "{0:d}") %>
关于c# - 如何在 asp.net 中编辑数据集列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2183409/
我是一名优秀的程序员,十分优秀!