如何在GridView中显示列表项?输出异常原因及解决方法
异常原因与解决办法
原因
你调用dgvViewsäljare.Rows.Add(säljare)时,直接将整个List<Säljare>集合作为参数传入Rows.Add()方法。该方法会把传入的集合当作单个单元格的内容,最终调用集合的ToString()方法,因此显示出集合的类型全称Systems.Collections.Generic.List[WindowsFormsApp62.form1+Säljare],而非预期的列表项内容。
解决办法
方法一:数据绑定(推荐用于大量数据)
直接将排序后的列表设置为GridView的数据源,WinForms会自动映射对象属性到列(可通过AutoGenerateColumns = true自动生成列,或提前配置好对应列):
// 绑定排序后的列表作为数据源 dgvViewsäljare.DataSource = säljare; // 如需为行设置Tag,绑定后遍历行处理 foreach (DataGridViewRow row in dgvViewsäljare.Rows) { if (!row.IsNewRow) { Säljare currentItem = (Säljare)row.DataBoundItem; row.Tag = currentItem; } }
方法二:遍历列表逐个添加行
若不使用数据绑定,需遍历集合中的每个对象,将其属性值作为单元格内容添加到GridView:
// 清空现有行(按需执行) dgvViewsäljare.Rows.Clear(); foreach (Säljare item in säljare) { // 传入对象的属性值创建新行,需与GridView列顺序对应 int rowIdx = dgvViewsäljare.Rows.Add(item.Nivå, item.姓名, item.业绩); // 设置当前行的Tag dgvViewsäljare.Rows[rowIdx].Tag = item; }
内容的提问来源于stack exchange,提问作者LOTUS
相关产品推荐
相关产品推荐

