代码之家  ›  专栏  ›  技术社区  ›  minty

向强类型数据集添加伪列

  •  2
  • minty  · 技术社区  · 17 年前

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

    它直接进入底层数据行,忽略我的属性。我如何才能最好地达到预期的结果?

    这是我的密码:

    部分类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";
                }
            }
        }
    
    2 回复  |  直到 17 年前
        1
  •  1
  •   to StackOverflow    17 年前

    DataBinder将看到您绑定到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
       ...
    
        2
  •  0
  •   Brady Moritz    15 年前