一般のユーザにはデータの追加・削除は行わせず、存在しているデータの変更のみを許可したいという場合があります。
変更もさせたくないときはDataGridのReadOnlyプロパティをtrueにすればいいのですが、変更は許可したい、となるとどうすればいいのでしょうか。
実はこんな場合もDataViewのプロパティをうまく設定すればいいんです。
-------------------------------------------------------
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
class WinSample : Form
{
DataGrid dg;
DataSet ds;
public static void Main()
{
Application.Run(new WinSample());
}
public WinSample()
{
this.SuspendLayout();
// DataGridの生成
dg = new DataGrid();
dg.Anchor = AnchorStyles.Top|AnchorStyles.Bottom|AnchorStyles.Left|AnchorStyles.Right;
dg.Location = new Point(10, 10);
dg.Size = new Size(275, 100);
this.Controls.Add(dg);
// DataSetの生成
ds = new DataSet();
this.Text = "DataGrid Sample";
this.Size = new Size(300, 200);
Button mybutton = new Button();
mybutton.Anchor = AnchorStyles.Bottom|AnchorStyles.Right;
mybutton.Location = new Point(200, 130);
mybutton.Text = "保存";
mybutton.Click += new EventHandler(this.mb_Click);
this.Controls.Add(mybutton);
this.ResumeLayout();
}
protected override void OnLoad(EventArgs e)
{
ds.ReadXml("testdata1.xml");
// DataViewの追加・削除を不許可にする
DataView dv = new DataView(ds.Tables[0]);
dv.AllowNew = false;
dv.AllowDelete = false;
dg.DataSource = dv;
}
private void mb_Click(object sender, EventArgs e)
{
ds.WriteXml("testdata2.xml", XmlWriteMode.WriteSchema);
}
}
-------------------------------------------------------
当然DataTableのDefaultViewを利用しても同じ設定が可能です。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)