我有很多与datagrid的数据源绑定有关的问题.我有一个DatagridView,我从列表中设置DataSource
List<Myclass> li = new List<MyClass>();
MyClass O = new MyClass();
O.Name = "Aden";
O.LastName = "B";
O.Id = 12;
li.Add(O);
O = new MyClass();
O.Name = "Li";
O.LastName = "S";
O.Id = 22;
li.Add(O);
Mydgv.DataSource = li;
Run Code Online (Sandbox Code Playgroud)
MyClass的地方
public Class MyClass
{
public string Name {get; set;}
public string LastName {get; set;}
public decimal Id {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
现在想要添加一个新的行到我的DataGridView
DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells[0].Value = "XYZ";
row.Cells[1].Value = 50.2;
Mydgv.Rows.Add(row);
Run Code Online (Sandbox Code Playgroud)
但它是不可能的,因为它引发错误的数据源的DataGrid与列表绑定里.所以我的第一个问题是我怎么能这样做?
我的第二个问题是,为了做到这一点,我提出了一个解决方案来改变我的List li并向其添加新行数据,然后将其设置为datagrid的数据源,但我认为它不是一个可行的解决方案是否有更好的解决方案?
甚至试图通过CurrencyManager来做到这一点
CurrencyManager …Run Code Online (Sandbox Code Playgroud) 我面临一个有关项目中 DataGridView 行隐藏的问题。我粘贴的代码适用于单独的测试项目,但不适用于我的项目。请帮我解决这个问题。
我正在测试的代码
public partial class frmTestGirdBinding : Form
{
CustomDataCollection cdata = new CustomDataCollection();
Random rnd = new Random();
public frmTestGirdBinding()
{
InitializeComponent();
}
private void frmTestGirdBinding_Load(object sender, EventArgs e)
{
BindingSource bindingSource1 = new BindingSource();
bindingSource1.DataSource = cdata;
dataGridView1.DataSource = bindingSource1;
//bindingSource1.Filter = "Srno = 3"; not working
CurrencyManager cm = (CurrencyManager)BindingContext[bindingSource1.DataSource];
cm.SuspendBinding();
//InVisible the rows
dataGridView1.Rows[2].Visible = false;
dataGridView1.Rows[3].Visible = false;
cm.ResumeBinding();
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i …Run Code Online (Sandbox Code Playgroud)