C# 如何在gridview或任何usful控件中显示对象

C# 如何在gridview或任何usful控件中显示对象,c#,asp.net,linq,C#,Asp.net,Linq,看看DataBinder类,它应该允许您做您想做的事情;-) 要绑定GridView(或类似的控件,如Repeater、ListView),通常需要知道对象的属性名称,因为这是将列绑定到的内容。本例就是这样,您可以绑定到LogID和LogedObject属性。稍后,将在对象上调用ToString以显示字符串表示形式。如果只需绑定logedevent,则执行以下操作,而不返回类EventDetail的集合。提取其他集合中LogeObject的集合或 直接绑定到网格 public class Eve

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

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

如果只需绑定logedevent,则执行以下操作,而不返回类EventDetail的集合。提取其他集合中LogeObject的集合或
直接绑定到网格

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; }
    }

}

首先,如果在属性中不执行任何操作,则不需要使用字段,然后设置它

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

其次,以DataGrid中的对象列表为例

public Object LogedObject { get; set; }
受保护的无效页面加载(对象发送方,事件参数e)
{
DataGrid dg=新DataGrid();
dg.DataSource=getModels();
dg.DataBind();
}
公共列表getModels()
{
var m=新列表();
对于(int a=0;a<15;a++)
{
m、 添加(neweventdetail(){prop1=a,prop2=string.Format(“prop2{0}”,a)});
}
返回m;
}
公共类事件详细信息
{
public Int64 LogID{get;set;}
公共对象LogeObject{get;set;}
}
任何人的tanx帮助我 我通过思考来解决这个问题 我使用refelection获取对象的属性和值,然后将该值添加到字符串列表中

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; }
}
//日志对象的exteract属性
PropertyInfo[]\u PropertyInfo=\u ObjectType.GetProperties();
列表_ObjBeforTostring=新列表();
//_ObjBeforTostring.Add(“”);
_ObjBeforTostring.Add(“*************在对象**********之前”);
_ObjBeforTostring.Add(“”);
foreach(PropertyInfo pf in_PropertyInfo)
{
如果(_objbefor!=null)
{
字符串_str=pf.GetValue(_objbefor,null).ToString();
_ObjBeforTostring.Add(pf.Name.ToString()+”::(“+_str+”);
_添加(“=======================================================”);
}
}
_ObjBeforTostring.Add(“”);
_ObjBeforTostring.Add(“***************在对象*********”之后);
_ObjBeforTostring.Add(“”);
foreach(PropertyInfo pf in_PropertyInfo)
{
如果(_objAfter!=null)
{
字符串_str=pf.GetValue(_objAfter,null).ToString();
_ObjBeforTostring.Add(pf.Name.ToString()+”::(“+_str+”);
_添加(“=======================================================”);
}
}

你说的“显示对象”是什么意思?您能为您的问题添加上下文吗?您好,是的,我有一个方法如何返回上述类(EventDetail)的集合,我将此集合绑定到gridview关于gridview不显示日志对象请不要再问同样的问题。您可以编辑此问题以添加详细信息。合并的重复。如果您有输入错误,gv.datasource应该是gv.DataSourcenow i want(beforobject)和(afterobject)在网格视图或任何其他控件的两个单独列中。请查看此站点的常见问题解答,了解如何使用它提问和获得答案。不要在评论中提出新问题。我不太明白这个解决方案是如何解决您的问题的,因为将对象数据绑定到网格时不需要任何反射。。。
//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("==============================");
    }
}