我如何在网格视图或任何有用的控件中显示对象

时间:2011-01-19 10:46:54

标签: c# asp.net linq

public class EventDetail
{
    private Int64 logID;

    public Int64 LogID
    {
        get { return logID; }
        set { logID = value; }
    }
    private Object logedObject;

    public Object LogedObject
    {
        get { return logedObject; }
        set { logedObject = value; }
    }

}

5 个答案:

答案 0 :(得分:1)

首先,你不需要使用字段,如果你没有在属性中做任何事情,那么设置它。

public Object LogedObject { get; set; }

就够了。

其次,要在DataGrid中显示对象列表,例如。

protected void Page_Load(object sender, EventArgs e)
{
    DataGrid dg = new DataGrid();
    dg.DataSource = getModels();
    dg.DataBind();
}

public List<EventDetail> getModels()
{
    var m = new List<EventDetail>();
    for (int a = 0; a < 15; a++)
    {
        m.Add(new EventDetail() { prop1 = a, prop2 = string.Format("Prop2 {0}", a) });
    }
    return m;                   
}

public class EventDetail
{
    public Int64 LogID { get; set; }
    public Object LogedObject { get; set; }
}

答案 1 :(得分:0)

查看DataBinder类,它应该允许你做你想做的事情; - )

答案 2 :(得分:0)

要与GridView(或类似的控件,如Repeater,ListView)绑定,您通常需要知道对象的属性名称,因为这是您将用于绑定列的内容。这个例子就是这样,你可以绑定到LogID和LogedObject属性。稍后,将在对象上调用ToString以显示字符串表示。

答案 3 :(得分:0)

如果您只需要绑定logedevent,而不是返回类EventDetail的集合,请执行以下操作。在其他一些集合中提取LogedObject的集合或
直接将其绑定到网格

protected void BindGrid()
{
   gv.DataSource = EventDetail_Object.LogedObect_Property_Of_Class;
   gv.DataBind();
}

答案 4 :(得分:0)

任何身体的坦克帮助我 我通过反思来解决这个问题 我使用refelection来获取我的对象的属性值,然后将此值添加到我的字符串列表

//exteract properties of loged object
PropertyInfo[] _PropertyInfo = _ObjectType.GetProperties();
List<string> _ObjBeforTostring = new List<string>();
//_ObjBeforTostring.Add("");
_ObjBeforTostring.Add("*************Befor Object**********");
_ObjBeforTostring.Add("");
foreach (PropertyInfo pf in _PropertyInfo)
{
    if (_objbefor != null)
    {
        string _str = pf.GetValue(_objbefor, null).ToString();
        _ObjBeforTostring.Add(pf.Name.ToString() + "  ::  ( " + _str + " )");
        _ObjBeforTostring.Add("==============================");
    }


}
_ObjBeforTostring.Add("");
_ObjBeforTostring.Add("*************After Object**********");
_ObjBeforTostring.Add("");
foreach (PropertyInfo pf in _PropertyInfo)
{
    if (_objAfter != null)
    {
        string _str = pf.GetValue(_objAfter, null).ToString();
        _ObjBeforTostring.Add(pf.Name.ToString() + "  ::  ( " + _str+" )");
        _ObjBeforTostring.Add("==============================");
    }
}