-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
在下面的方法中,需要一个对象,那么如何将其转换为该类型呢?无论哪一列,我总是得到null。
从.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 " ";
}发布于 2011-01-23 18:56:31
以下是应如何开展工作:
<%# Eval("Name") == null ? " " : Eval("Name")%> 发布于 2011-01-19 09:06:08
从本文获得帮助:
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 " ";
}https://stackoverflow.com/questions/4731542
复制相似问题