我有一个类并且进入这个类我已经拖了另一个类如何将这个类绑定到网格视图以显示内部类的属性
这是我的代码
public class EventDetail
{
private static Data.Data.BatisEntities Batis_CmsDb = new Data.Data.BatisEntities();
private Int64 logID;
public Int64 LogID
{
get { return logID; }
set { logID = value; }
}
private object logedObject;
public object LogedObject
{
get { return logedObject; }
set { logedObject = value; }
}
/// <summary>
/// show detailed information for an selected log
/// </summary>
/// <param name="_LogId"></param>
/// <returns></returns>
public static List<Modules.EventLog.Wraper.EventDetail.EventDetail> Show_DetailLog(Int64 _LogId)
{
string _XmlObjBefor, _XmlObjAfter, _strObjectType;
var _SelectedLLogDetail = (from e in Batis_CmsDb.Eventlog_Detial
where e.LogID == _LogId
select e).First();
//get the string object to desrialize;
_XmlObjBefor = _SelectedLLogDetail.BEFOR_OBJECT;
_XmlObjAfter = _SelectedLLogDetail.AFTER_OBJECT;
_strObjectType = _SelectedLLogDetail.OBJECT_TYPE;
//now create an instanse of type;
Type ObjectType = Type.GetType(_strObjectType);
object _objbefor = Activator.CreateInstance(ObjectType);
object _objAfter = Activator.CreateInstance(ObjectType);
//get the type of new object to send xml serilizer
Type _ObjectType = _objbefor.GetType();
//Deserilize object
_objbefor = Convertor.XmlDesrialize.XmlDesrializer.DesrializeAnyObject(_XmlObjBefor, _ObjectType);
_objAfter = Convertor.XmlDesrialize.XmlDesrializer.DesrializeAnyObject(_XmlObjAfter, _ObjectType);
List<Modules.EventLog.Wraper.EventDetail.EventDetail> lstLog = new List<Modules.EventLog.Wraper.EventDetail.EventDetail>();
Modules.EventLog.Wraper.EventDetail.EventDetail _EventDetailBefor = new Modules.EventLog.Wraper.EventDetail.EventDetail();
Modules.EventLog.Wraper.EventDetail.EventDetail _EventDetailAfter = new Modules.EventLog.Wraper.EventDetail.EventDetail();
_EventDetailAfter.LogedObject = _objAfter;
_EventDetailBefor.LogedObject = _objbefor;
_EventDetailBefor.LogID = _LogId;
_EventDetailAfter.LogID = _LogId;
lstLog.Add(_EventDetailBefor);
lstLog.Add(_EventDetailAfter);
return lstLog;
}
}
答案 0 :(得分:0)
在aspx.cs中
protected void Page_Load(object sender, EventArgs e)
{
List<TestOne> testOneItems = new List<TestOne>();
TestOne testOne = new TestOne { TestProperty = new TestOne.TestInner { TestInnerProperty = "test Inner Property" }};
testOneItems.Add(testOne);
GridView1.DataSource = testOneItems;
GridView1.DataBind();
}
在aspx中
<asp:GridView ID='GridView1' runat='server' AutoGenerateColumns="false" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID='Label1' runat='server' Text ='<%# Bind("TestProperty.TestInnerProperty") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
使用的样本类型:
public class TestOne
{
public TestOne()
{
}
public TestInner TestProperty
{
get;
set;
}
public class TestInner
{
public String TestInnerProperty
{
get;
set;
}
}
}