【问题标题】:How edit dataset column value in asp.net如何在asp.net中编辑数据集列值
【发布时间】:2011-01-12 02:36:34
【问题描述】:

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

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

  1. 此表的单元格很少有 Null 值,我想将 null 替换为“-”吗?
  2. 一列是 System.datetime 数据类型,我想在其中删除时间。我只想约会?

我正在使用 PUSH 方法在 asp.net 的水晶报表中使用此数据集。

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

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

【问题讨论】:

    标签: c# asp.net dataset


    【解决方案1】:

    您的问题的一部分可以用数据库中的 sql 完成,您只需执行更新语句并将那些空单元格替换为“-”。你问题的另一部分对我来说不是很清楚。如果您询问如何确保可以使用数据网格编辑数据列中的行,您可以阅读this 文章,您将能够使网格进入可编辑模式。

    【讨论】:

    • 谢谢,我们不能用单个字符替换数据表中的所有空值
    【解决方案2】:

    遍历行,随时更新值绝对是一种解决方案,而且非常简单:

    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 绑定到一些多记录数据控件(GridViewRepeater 等)是合理的。如果是这种情况,最好在数据绑定期间进行转换:

    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";
    

    GridView 中,可以在列声明中使用DataFormatString 格式化日期:

    <asp:BoundField DataField="data" DataFormatString="{0:d}" />
    

    Repeater 绑定数据时类似:

    <%# Eval("date", "{0:d}") %>
    

    【讨论】:

    • 谢谢,实际上我在水晶报表中使用 PUSH 方法,而我在报表中使用数据集列。
    • 好的。我对 Crystal Reports 一无所知,但我想前两个解决方案应该可以工作,只要您有对 DataTable 的引用。
    猜你喜欢
    • 2020-06-24
    • 2020-11-14
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多