我的datagridview绑定数据无法正常工作。
这是.cs文件:
using FirebirdSql.Data.FirebirdClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Magacin
{
public partial class AnalizaPartneraGlobal : Form
{
List<Int_String> partneri = Komercijalno.Partner.Lista();
List<NeaktivniPartner> neaktivniPartneri = new List<NeaktivniPartner>();
public AnalizaPartneraGlobal()
{
InitializeComponent();
dataGridView1.AutoGenerateColumns = true;
}
private void button1_Click(object sender, EventArgs e)
{
foreach(Int_String partner in partneri)
{
double danaBezProdaje = (DateTime.Today - Komercijalno.Partner.PoslednjaKupovina(partner._int)).TotalDays;
if ( danaBezProdaje > 31)
{
NeaktivniPartner np = new NeaktivniPartner();
np.ppid = partner._int;
np.naziv = partner._string;
np.danaBezKupovine = danaBezProdaje;
neaktivniPartneri.Add(np);
}
}
dataGridView1.DataSource = M.List.ConvertToDataTable(neaktivniPartneri);
dataGridView1.Refresh();
}
}
public class NeaktivniPartner
{
public int ppid;
public string naziv;
public double danaBezKupovine;
}
}
你可以看到我只有button
和dataGridView
。
如果我回想起来,我之前一直在做dataGridView.dataSource = myGenericList;
,它完美地工作了,但由于某些原因现在不起作用,所以我尝试将其转换为DataTable
,但仍然没有效果。然后我添加了AutogenerateColumns
,仍然没有显示任何数据或列。在那之后,我尝试添加Refresh()
,但仍然没有任何东西。
在调试器中,它显示datagridview内部有行:
![enter image description here](https://istack.dev59.com/nwOJj.webp)
除此之外,我还尝试过:
- 删除datagridview并重新开始
- 关闭VS并重新打开
- 尝试使用
BindingList
- 尝试将绑定列表直接绑定到数据源
ConvertToDataTable
的代码如下:
public static DataTable ConvertToDataTable<T>(IList<T> data)
{
PropertyDescriptorCollection properties =
TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
table.Rows.Add(row);
}
return table;
}
dataGridView1.DataSource = null
吗? - GuidoGNeaktivniPartner
类上...它缺少一个get
ter和set
ter。如果没有它们,DataGridView.DataSource
将不知道该显示什么。 - JohnG{get; set;}
就可以了。如果你不回答,我会在两天内回答。谢谢 :) - Aleksa Ristic