myGridView.DataSource = LinqDataSource は機能しますが、選択に対してのみ機能します。列を編集および削除していますが、それらを使用しようとすると、イベントが捕捉されないというエラーが発生します。具体的には、OnRowDeleting を見てきましたが、接続する必要があるものは他にもあると確信しています。
myGridView.OnRowDeleting = ??
LinqDataSource で、必要なもののように見えるものを見つけることができないようです:(
編集:これは私がやっていることを示すサンプルコードです。
protected virtual void OnRowDeleted(Object sender, GridViewDeletedEventArgs e)
{
// it means the last row was deleted
if (fieldGridView.Rows.Count == 1)
{
fieldGridView.DataSourceID = null;
fieldGridView.DataSource = new[] { new FormField { Required = false } };
fieldGridView.AutoGenerateDeleteButton = false;
fieldGridView.AutoGenerateEditButton = false;
}
}
protected void InsertButton_Click(object sender, CommandEventArgs e)
{
// pull data out of footer row and insert it into the DB
if (fieldGridView.DataSource == null || fieldGridView.DataSource.GetType() != LinqDataSource1.GetType())
{
fieldGridView.DataSource = LinqDataSource1;
fieldGridView.AutoGenerateDeleteButton = true;
fieldGridView.AutoGenerateEditButton = true;
}
}
また、マークアップで OnRowDeleting イベントを静的に設定したところ、エラーが解消されたことにも注意してください。ただし、Linq データ ソースが正しく設定されていません。コードはそれを更新していますが、何らかの理由で固執しているだけなので、削除列を再度有効にすると、データ ソースは割り当てた一時データ ソースのままになります (これは単なるリストです)。私が削除を押したとき、それは爆発していました。コールバックを静的に定義したので、呼び出されますが、データ ソースが linq データ ソースに適切に切り替えられていないため、削除は行われません。
本質的に、私の問題は、最後の削除でデータ ソースをリストに動的に設定すると、変更が固執することですが、最初の挿入でデータ ソースを linq データ ソースに動的に設定すると、変更はされません。こだわり。最も奇妙な点は、データ ソースだけでなく、私が行っている他の変更が固執することです。自動生成された編集および削除列を有効にしていますが、その変更はすぐに反映されます。