【问题标题】:How to use "strongly typed data table" (or "row") in WebForms code-behind?如何在 WebForms 代码隐藏中使用“强类型数据表”(或“行”)?
【发布时间】:2015-10-28 00:17:03
【问题描述】:

我们的 asp.net WebForms 应用程序正在为“强类型数据表”和数据行使用表适配器。在代码隐藏中,我发现我不能直接使用 BLL 类实例(例如我们的“Main_TblAdap.CostDataTable”)的返回值来引用其中的强类型数据行和列/字段。

在事件和方法背后的代码中使用强类型数据表或数据行的正确方法是什么?

此外,我们希望能够引用特定数据行或对数据表进行排序/过滤。

一个好的编码示例将非常有助于展示以下最佳方式:(1) 从强类型数据表中获取数据表中特定数据行中的引用值,以及 (2) 如何排序/过滤强类型数据表。

【问题讨论】:

    标签: asp.net webforms strongly-typed-dataset


    【解决方案1】:

    首先从表中创建一个 DataView。您可以自定义初始化视图或调用 get default。

    DataView dv = yourTable.DefaultView;
    

    或者在创建引用指针时从表中过滤视图,如下所示:

    DataView custDV = new DataView(YourTable[yourTableName], 
    "VehicleID = 'xxx'", // Row filter
    "VehicleID", // Sort
    DataViewRowState.CurrentRows);
    

    现在您可以按行状态对视图进行排序和过滤

    dv.Sort();
    view.RowStateFilter = DataViewRowState.Added | 
        DataViewRowState.ModifiedCurrent;
    

    行。 您可以在 DataView 中与 DataRowView IEnumerable 进行交互。

     foreach (DataRowView rowView in thisDataView)
     {
       // your code here
     }
    

        foreach(DataRow r in dt.Rows)
        {
         // your code here
        }
    

    要在表中查找行,请尝试:

    var result = dt.AsEnumerable().Select(r => r["Id"] = 4);
    
        if(result !=null)
        {
            int x = 0;
        }
    

    现在只需绑定到您的视图,如果您添加行或更新它,视图也会更新。

    【讨论】:

    • 感谢您的回复。但是,我没有看到变量和示例之间的关系。例如:对于排序,什么是 'view' ;是“dv”吗?如果不是,什么是“视图”?我不确定正在过滤或排序什么?如果我想按“VehicleID=555”过滤怎么办?此外,在“// your code here”中,字段是否像“r.InitalDate”中的强类型 - 如何引用字段?在最后一个例子中,什么是“dt”? - 强类型表“yourTable”?或者它是什么?谢谢。
    • 您正在使用您的表创建指针 dv:DataView dv = yourTable.DefaultView;获得 dv 参考后,您可以使用 dv.Sort() 与它进行交互以进行排序;其中有一些过载。您还可以更新数据表行,视图将反映这一点。
    • 再次感谢您的回复。你已经澄清了我之前的一些问题。我剩下的一个问题是:在示例的 ROWS 部分中,如何在循环中引用“rowView”或“r”变量的特定字段?我要求它确定我是否可以从行变量中引用字段“VehicleYear”,例如 If (rowView.VehicleYear
    • 您的 If (rowView.VehicleYear
    • 我将在 DataBound() 事件中执行操作。
    猜你喜欢
    • 2011-01-19
    • 2017-02-16
    • 2023-03-27
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    相关资源
    最近更新 更多