Use datagridview today
The init code in form is as follows:
Datagridview1.setcolumn (typeof (debtnormal), epropertyfieldfilter. all); var debtinfo = new debtnormal (); debtinfo. bond code = "test"; var ROW = new datagridviewrow (); row. tag = debtinfo; datagridview1.rows. add (ROW); row. setrowvalues (debtinfo. toitems (epropertyfieldfilter. field); _ dtdebtrow. add ("test", row );
At this time, everything works normally after the datagridview1 is started. We can see that the new datagridviewrow () statement is used here.
However, add a new row in the running process,
The statement is as follows:
Void _ parsedebtnormalinfo_ondataupdated (debtnormal arg_debtinfo) {This. Invoke (new action () => {If (! _ Dtdebtnormal. containskey (arg_debtinfo. bond Code) _ dtdebtnormal. add (arg_debtinfo. bond code, arg_debtinfo); // datagridview1.datasource = NULL; // datagridview1.datasource = _ dtdebtnormal. values. toarray (); var debtinfo = arg_debtinfo; var ROW = (datagridviewrow) NULL; If (_ dtdebtrow. trygetvalue (debtinfo. bond code, out row) {debug. set (debtinfo. bond code, "hello");} else {ROW = new datagridviewrow (); // datagridview1.rows [datagridview1.rows. add ()-1]; datagridview1.rows. add (ROW); // row. tag = debtinfo; _ dtdebtrow. add (debtinfo. bond code, row); row. setrowvalues (debtinfo. toitems (epropertyfieldfilter. field);} var rowtest = _ dtdebtrow ["test"]; var dinfotest = rowtest. tag as debtnormal; dinfotest. subject rating = "pig"; rowtest. setrowvalues (arg_debtinfo.toitems (epropertyfieldfilter. field); // row. setrowvalues (dinfotest. toitems (epropertyfieldfilter. field ));}));}
Here we also use the new datagridviewrow () statement. At this time, the running data is displayed normally, but once you click the newly created data, we will find that it becomes blank.
You must change the code of New datagridviewrow () to datagridview1.rows. Add (); enable it to be automatically added internally, and then set this row.
Row = maid [maid. add ()-1]; // row. tag = debtinfo; _ dtdebtrow. add (debtinfo. bond code, row); row. setrowvalues (debtinfo. toitems (epropertyfieldfilter. field ));
So there is no problem.