我把数据保存到List<T>中 在页面上怎么把list中的数据绑定到gridview中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我把数据保存到List<T>中 在页面上怎么把list中的数据绑定到gridview中相关的知识,希望对你有一定的参考价值。

public static List<BuyMessage> getListBuyMessage()

BuyMessage bm = new BuyMessage();
List<BuyMessage> list = new List<BuyMessage>();
try

string sql = "select * from BuyMessage";
sdr = hepler.GetDataReader(sql);
while (sdr.Read())

bm.Id = Convert.ToInt32(sdr["id"]);
bm.ProductName = sdr["productName"].ToString();
bm.Name = sdr["name"].ToString();
bm.Phone = sdr["phone"].ToString();
bm.Leirong = sdr["leirong"].ToString();
list.Add(bm);
这是DAL中的方法

参考技术A gridview.datasounce=list;
gridview.databind();追问

我知道用这个,不过循环出来,不会

asp.net 如何取出List<T>中每一项的值

如题, 我有一个泛型集合 List<T> list=new List<T>(); 我在实例化的时候T是不确定的, 此时我将list传递到b页面,在b页面如何取出list集合中的每一项,每一个字段的值 注:在b页面中也不能确定T是什么
对了, T是一个实体对象, 只是不确定具体是哪一个实体

你在实例化的时候如何做到T是的类型是不确定的?。。。
泛型类是这么用的
public class MyList<T> : List<T>

//这里重写一个将T中的属性全显示出来的方法
public override string ToString()

string result = string.Empty;
foreach (T obj in this)

result += "[";
PropertyInfo[] ps = obj.GetType().GetProperties();
//循环获取该对象的所有属性和值
foreach (PropertyInfo info in ps)

result += "属性:" + info.Name + " ";
result += "值:" + info.GetValue(obj,null)+" ";

result += "],";

return result.TrimEnd(',');


然后自定义一个对象Student
public class Student

private string _name = string.Empty;
public string Name

set _name = value;
get return _name;

private int _age = 0;
public int Age

set _age = value;
get return _age;



使用时:
Student s1 = new Student();
s1.Name = "stu1";
s1.Age = 90;
Student s2 = new Student();
s2.Name = "stu2";
s2.Age = 70;
MyList<Student> list = new MyList<Student>();
//如果你需要跨页面传递,这里可以选择把list存到Session里
list.Add(s1);
list.Add(s2);
//跨页面的话,要把Session转换回来,这里模拟一下就用上边已经定义的list了
IList<Student> newList=list;
//newList.ToString()显示所有对象的属性和值,已经在泛型集合里定义好的
Console.WriteLine(newList.ToString());
Console.Read();追问

就是通过方法传递, 比如b页面中有一个方法
void GetList( List list )

//在这个方法中, 我想遍历list集合, 然后取出集合中每一项的字段的值
//T:T是一个Class类的实体,比如Student类, 成员有Name,Age
//然后我想在遍历的时候,分别取出Name和Age的值, 当然,Student只是举例, 我还可以传递其他的实体对象,然后分别取出实体对象中的值

追答

第一,你不能够跨页面将list传递过去,B页面公开了方法也不行。你只能用Session,Cookie等对象进行传递。如果你的B页面仅仅是做了一个方法然后有返回值,那B页面可以改成B类来实现。

第二,在我写的例子中,MyList就是一个自定义的泛型集合类。所谓泛型,就是对于T不管是任何类型的情况下,都可以使用MyList这个集合类来实现需要的功能,而不是说List这个T是可以随意使用的,你在实例化的时候必须确定类型,比如MyList,而你在另外个页面,这个对象也只能还原成MyList,然后调用自定义的ToString方法显示所有对象的属性和值。

追问

非常感谢你的解答。用了你提供的一些意见, 成功的将10万条的测试数据用零点几秒时间插入到数据库中了, 谢谢!

参考技术A 我有点疑问啊,页面之间能传集合吗?页面间传值方式无非那么几种,session,application, QueryString。。。

除非你是页面A 的class A 调用 页面B 的 方法 public voidTest<T>()(List<T> list)


如果是这样,这个泛型泛型T必须进行泛型约束 , 比如这里有个 class C
public voidTest<T>()(List<T> list) where T: C

//在这里边你可以使用 C类型对象的属性和方法
参考技术B 你怎么传递到b页面?
是说传递到b的一个方法里吗?
b页面方法大致代码如下:
void abc<T>(List<T> list)
foreach(T item in list)
// 对当前这一项做处理吧

追问

嗯 ,是的, 比如我用一个方法将list传递到另外一个页面,我想要在那一个页面中对list进行遍历并取值, 只是不知道list属于哪个实体的集合, 所以不知道该怎么取值了

追答

你必须知道这个实体有什么样的功能,如果不知道,只能简单的去调用ToString()方法了

通常都要求这个T实现了一个接口,然后就可以对这个接口的方法进行调用了

追问

能给个具体的例子吗?

以上是关于我把数据保存到List<T>中 在页面上怎么把list中的数据绑定到gridview中的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 如何取出List<T>中每一项的值

System.Text.Json 不序列化 List<T>

List集合和JSON互转工具类

C#利用GridView对IList<T>或List<T>进行插入、删除和修改

怎样从jsp页面传递一个List<Map<String,Object>>的集合到Action

如何将 List<> 数组中的数据保存到文本文件(C#)?