首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将DataRowView转换为类型行?

将DataRowView转换为类型行?
EN

Stack Overflow用户
提问于 2011-01-19 03:45:27
回答 2查看 2.2K关注 0票数 0

-update start

无法将“namespace.Student”类型的对象强制转换为“System.Data.DataRowView”类型

代码语言:javascript
复制
 <%# FixNull(((System.Data.DataRowView)Container.DataItem).Row, "Name")%>

 protected string FixNull(DataRow dr, string fieldName)
        {
            if (dr != null)
            {
                if (!dr.IsNull(fieldName))
                    return (dr[fieldName]).ToString();            }
            return "&nbsp;";
        }

-update end

在下面的方法中,需要一个对象,那么如何将其转换为该类型呢?无论哪一列,我总是得到null。

从.aspx打来:

代码语言:javascript
复制
<%# FixNull((mynamespace.Student)(Container.DataItem), "CreatedBy")%>

.CS

代码语言:javascript
复制
 protected string FixNull(object dataItem, string fieldName)
        {
            if (dataItem != null)
            {
                DataRowView drv = (DataRowView)dataItem;
                if (drv != null) //always getting null
                {
                    if (!drv.Row.IsNull(fieldName))
                        return (drv[fieldName]).ToString();                     
                }
            }            
            return "&nbsp;";
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-23 18:56:31

以下是应如何开展工作:

代码语言:javascript
复制
<%# Eval("Name") == null ? "&nbsp;" : Eval("Name")%>   
票数 2
EN

Stack Overflow用户

发布于 2011-01-19 09:06:08

从本文获得帮助:

http://www.codeproject.com/Articles/38669/Using-Formatting-Functions-with-GridView-Template-.aspx

更新.

尝试给定的代码:

ASPX:

代码语言:javascript
复制
    <asp:GridView ID="gvSample" runat="server" AutoGenerateColumns="false">
        <Columns>
            <asp:TemplateField HeaderText="ID" HeaderStyle-Width="100px">
                <ItemTemplate>
                    <%# FixNull(Container.DataItem ,"ID") %>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Code" HeaderStyle-Width="100px">
                <ItemTemplate>
                    <%# FixNull(((System.Data.DataRowView)Container.DataItem).Row, "Code") %>  <!--updated here-->
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

代码在中的应用

代码语言:javascript
复制
    protected void Page_Load(object sender, EventArgs e)
    {
        gvSample.DataSource = GetData();
        gvSample.DataBind();
    }

    private DataTable GetData()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("ID", typeof(string)));
        dt.Columns.Add(new DataColumn("Code", typeof(string)));
        DataRow dr;
        dr = dt.NewRow();
        dr["ID"] = 1;
        dr["Code"] = null;
        dt.Rows.Add(dr);
        dr = dt.NewRow();
        dr["ID"] = 2;
        dr["Code"] = "Karan";
        dt.Rows.Add(dr);
        return dt;
    }



protected string FixNull(object dataItem,string fieldname)
{
    if (dataItem != null)
    {
       //updated here
        //DataRowView drv = (DataRowView)dataItem;
        //if (drv != null)
        //{
        //    if (!drv.Row.IsNull(fieldname))          
        //        return (drv[fieldname]).ToString();
        //}
        DataRowView drv;
        DataRow dr;
        if (dataItem is DataRowView)
        {
            drv = (DataRowView)dataItem;
            if (drv != null)
            {
                if (!drv.Row.IsNull(fieldname))
                    return (drv[fieldname]).ToString();
            }
        }
        if (dataItem is DataRow)
        {
            dr = (DataRow)dataItem;
            if (dr != null)
            {
                if (!dr.IsNull(fieldname))
                    return dr[fieldname].ToString();
            }
        }
    }
    return "&nbsp;";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4731542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档