ADO.NET, DataColumn, DefaultValue, Expression og DataGridView
Jeg har en DataTable med nogle kolonner i. Hver kolonne har en DefaultValue og nogle kolonner har en expression sat. Jeg viser nu DataTable i et DataGridView vha et DataView. Brugeren har rettighed til at addere i DataGridView'et.Jeg ville nu formode at DefaultValue ville fremkomme i nye rows, men nej. Ydermere fungere expression ikke, HVORFOR? Her er min kode:
DataTable dt = new DataTable();
dt.Columns.Add(CreateColumn("d", typeof(string), null, ""));
dt.Columns.Add(CreateColumn("a", typeof(string), null, "0"));
dt.Columns.Add(CreateColumn("b", typeof(string), null, "0"));
dt.Columns.Add(CreateColumn("c", typeof(string), "CONVERT(CONVERT(a, 'System.Decimal') * CONVERT(b, 'System.Decimal'), 'System.String')", "0"));
DataView dw = new DataView(dt);
this.dataGridView1.AutoGenerateColumns = false;
this.dataGridView1.Columns.Add(CreateDGColumn(new EPBC.Windows.Controls.DataGridViewTextBoxColumn2(), "d", 0));
this.dataGridView1.Columns.Add(CreateDGColumn(new EPBC.Windows.Controls.DataGridViewTextBoxColumn2(), "a", 1));
this.dataGridView1.Columns.Add(CreateDGColumn(new EPBC.Windows.Controls.DataGridViewTextBoxColumn2(), "b", 2));
this.dataGridView1.Columns.Add(CreateDGColumn(new EPBC.Windows.Controls.DataGridViewTextBoxColumn2(), "c", 3));
this.dataGridView1.DataSource = dw;
private DataGridViewColumn CreateDGColumn(DataGridViewColumn column, string headerText, int index)
{
column.DisplayIndex = index;
column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
column.HeaderText = headerText;
return column;
}
private DataColumn CreateColumn(string name, Type dataType, string expression, object defaultValue)
{
DataColumn dc = new DataColumn(name);
dc.DataType = dataType;
dc.Expression = expression;
dc.DefaultValue = defaultValue;
return dc;
}
