如何在asp.net中编辑数据集列值

时间:2010-02-02 10:54:52

标签: c# asp.net dataset

我有数据集,其中一个表有5列填充数据库中的数据。

当我运行应用程序数据表包含超过50行时,我想在从数据库获取数据后更新数据表的值。我的要求是

  1. 这个表有几个具有Null值的单元格,我想用“ - ”替换null?
  2. 一列是System.datetime数据类型,我想删除时间。我只想约会?
  3. 我正在使用PUSH方法在asp.net的水晶报告中使用此数据集。

    这里我认为我应用数据表中存在的一个行循环并相应地更新单元格。但我正在搜索任何直接更新方法?

    请帮助我如何解决上述2个问题?

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文章,然后您就可以使网格进入可编辑模式。