C# WPF DataGridView set Values programmatically (.Rows[x].Cells[y].Value) -


i trying port winforms code datagrid wpf application, tried several solutions, nothing worked yet.

code want port:

this.datagridview1.enabled = true;             this.datagridview1.rowcount = 0x12;             (int = 0; < 0x12; i++)             {                 this.datagridview1.update();                 this.datagridview1.rows[i].cells[0].value = i;                 this.datagridview1.rows[i].cells[1].value = this.getname(i);             } 

the solutions tried:

xaml:

<datagrid name="datagridview1" itemssource="{binding}" autogeneratecolumns="false" margin="176,70,409,92" selectionchanged="datagridview1_selectionchanged" >             <datagrid.columns>                 <datagridtextcolumn binding="{binding clientid}" header="#"/>                 <datagridtextcolumn binding="{binding clientname}" header="client name"/>             </datagrid.columns>         </datagrid> 

c#:

#1: if (datagridview1.rowcount == 1)             {                 datagridview1.rows.add(11);             }              (uint = 0; < 12; i++)             {                 datagridview1[0, convert.toint32(i)].value = i;                 datagridview1[1, convert.toint32(i)].value = clientnames(i);             }         }  #2: datatable dt = new datatable(); datacolumn column;  column = new datacolumn(); column.datatype = type.gettype("system.string"); column.columnname = "s1"; dt.columns.add(column);  column = new datacolumn(); column.datatype = type.gettype("system.string"); column.columnname = "s2"; dt.columns.add(column);   if (dt.items.count == 1)             {                 dt.rows.add(11);             }              (uint = 0; < 12; i++)             {                 datarow row = mydt.newrow();                 row["s1"] = i.tostring();                 row["s2"] = clientnames(i);                 dt.rows.add(row);             }         }  #3: datarowview rowview = datagridview1.selecteditem datarowview;  datagridview1.enabled = true; datagridview1.items.count = 12; (int = 0; < 12; i++) {       datagridview1.update();       rowview.rows[i].cells[0].value = i;       rowview.rows[i].cells[1].value = getname(i); } 

i googling around 3 weeks now, hope can me.

you can write following:

public class datagridviewmodel    {       public string id{get;set;}       public string value{get;set;    } 

...

  (int = 0; < 0x12; i++)             {                this.models.add(new datagridviewmodel(){id=i,value=getname(i)};             } 

in xaml:

   <datagrid name="datagridview1" itemssource="{binding models}" autogeneratecolumns="false" margin="176,70,409,92" selectionchanged="datagridview1_selectionchanged" >             <datagrid.columns>                 <datagridtextcolumn binding="{binding id}" header="#"/>                 <datagridtextcolumn binding="{binding value}" header="client name"/>             </datagrid.columns>         </datagrid> 

do not forget implement notifypropertychanged if needed. if need further explanations, feel free ask, have shown basic idea in code above.


Comments

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -