日期:2014-05-18  浏览次数:20503 次

repeater里的取列值问题,代码如下?
public     void   R1_ItemDataBound(Object   Sender,   RepeaterItemEventArgs   e)  
{
DataRowView   item   =   e.Item.DataItem   as   DataRowView;

string   ReceiveUnitName   =item[ "ReceiveUnitName "].ToString();
Response.Write(ReceiveUnitName);
}

ReceiveUnitName是列名;
出现的异常是:System.NullReferenceException:   未将对象引用设置到对象的实例
问题出在string   ReceiveUnitName=item[ "ReceiveUnitName "].ToString();
这一行?


------解决方案--------------------
System.Web.UI.WebControls.RepeaterItem可以转换成System.Data.DataRowView吗?
我在MSDN中怎么没查到继承关系???

Repeater使用的是Template,item[ "ReceiveUnitName "]这种语法我想是不适用的。
------解决方案--------------------
取什么值?

取服务器控件的值?用FindControl方法
------解决方案--------------------
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView thisRow = (DataRowView)e.Item.DataItem;
if (thisRow != null)
{

Label ip = (Label)e.Item.FindControl( "labelip ");
if (ip != null)
{
ip.Text = book.htmlEncode(Convert.ToString(thisRow[ "ask_type "]));
}
}
}

好象可以