-update start
无法将'namespace.Student'类型的对象强制转换为'System.Data.DataRowView'
<%# 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 " ";
}
-update end
在下面的方法中期待一个对象,那么我将如何将它转换为该类型?无论什么专栏,我总是会无效。
从.aspx调用:
<%# FixNull((mynamespace.Student)(Container.DataItem), "CreatedBy")%>
.CS
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 " ";
}
答案 0 :(得分:2)
这是应该怎么做:
<%# Eval("Name") == null ? " " : Eval("Name")%>
答案 1 :(得分:0)
从本文获得帮助:
http://www.codeproject.com/Articles/38669/Using-Formatting-Functions-with-GridView-Template-.aspx
<强>更新... 强>
尝试给定的代码:
<强> ASPX:强>
<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>
代码
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 " ";
}