gpt4 book ai didi

c# - 将虚拟列添加到强类型数据集

转载 作者:太空宇宙 更新时间:2023-11-03 14:37:53 25 4
gpt4 key购买 nike

我正在编写一个使用强类型数据集的站点。

创建表的 DBA 为一列指定了一个代表负数的值。该列是“Do_Not_Estimate_Flag”,其中该列可以包含“T”或“F”。我无法更改基础表或填充它的逻辑。我想要做的是将“ESTIMATION_ALLOWED”列添加到我的强类型数据集的数据行中。我已经使用我可以修改的部分类完成了此操作。 (我可以安全地修改自动生成的部分类和非自动生成的部分类。)逻辑在部分类的属性中。问题是当值被加载时 ala

<%#DataBinder.Eval(Container.DataItem, "ESTIMATION_ALLOWED")%>

它直接转到基础 DataRow,忽略我的属性。我怎样才能最好地达到预期的结果?

这是我的代码:

部分类 MyFunkyDataTable {

        private System.Data.DataColumn columnESTIMATION_ALLOWED;
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public System.Data.DataColumn ESTIMATION_ALLOWEDColumn
{
get
{
return columnESTIMATION_ALLOWED;
}
}

public override void EndInit()
{


//init class
columnESTIMATION_ALLOWED = new System.Data.DataColumn("ESTIMATION_ALLOWED", typeof(string), null, global::System.Data.MappingType.Element);
Columns.Add(columnESTIMATION_ALLOWED);
columnESTIMATION_ALLOWED.ReadOnly = true;

//init Vars
columnESTIMATION_ALLOWED = Columns["ESTIMATION_ALLOWED"];
base.EndInit();
}




}
partial class MyFunkyRow
{
public string ESTIMATION_ALLOWED
{
get
{
if(DO_NOT_EST_FLAG == "N")
{
return "Yes";
}
return "No";
}
}
}

最佳答案

DataBinder 将看到您正在绑定(bind)到 DataRow 并使用其字段而不是您定义的任何属性。

你可以创建一个方法来做你想做的事,例如:

<%#FormatFlag(DataBinder.Eval(Container.DataItem, "Do_Not_Estimate_Flag" ))%>

你有一个方法:

protected string FormatFlag(object doNotEstimateFlag)
{
if (doNotEstimateFlag.ToString() == "N") return "Yes";
return "No";
}

另一种方法是修改填充数据表的查询。例如,您可以在类型化的数据集中有一列“ESTIMATE_ALLOWED”。填充它的查询类似于以下内容(取决于数据库,这是针对 SQL Server 的):

SELECT
...
CASE WHEN Do_Not_Estimate_Flag = 'N' THEN 'Yes' ELSE 'No' END ESTIMATE_ALLOWED,
...
FROM
...

关于c# - 将虚拟列添加到强类型数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/179706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com