我有数据集,其中一个表有5列填充数据库中的数据。
当我运行应用程序数据表包含超过50行时,我想在从数据库获取数据后更新数据表的值。我的要求是
我正在使用PUSH方法在asp.net的水晶报告中使用此数据集。
这里我认为我应用数据表中存在的一个行循环并相应地更新单元格。但我正在搜索任何直接更新方法?
请帮助我如何解决上述2个问题?
答案 0 :(得分:4)
循环遍历行,随时更新值绝对是一个解决方案,而且非常简单:
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中的日期函数,所以你必须自己计算最后一个。)
您已对自己的帖子进行了标记,因此我认为您可以将DataTable
绑定到某个多记录数据控件(GridView
,{{1}等等)。如果是这种情况,最好在数据绑定期间进行转换:
Repeater
虽然这似乎需要更多代码,但它也为您提供了更大的灵活性。例如:
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] = "-";
}
}
在if (data.Row.IsNull("importantField")) e.Row.CssClass = "error";
中,可以使用列声明中的DataFormatString
格式化日期:
GridView
数据绑定<asp:BoundField DataField="data" DataFormatString="{0:d}" />
:
Repeater
答案 1 :(得分:0)
您的问题的一部分可以使用数据库中的sql完成,您只需执行更新语句,并用“ - ”替换这些空单元格。问题的另一部分对我来说并不是很清楚。如果您询问如何确保可以使用数据网格编辑数据列中的行,则可以阅读this文章,然后您就可以使网格进入可编辑模式。