私は、セル編集イベントでアクティブなデータグリッドの名前を取得しようとしています。セル編集イベントでアクティブなDataGridの名前を取得しますか?
まず、これは良い習慣であるかどうかわかりませんが、データグリッドのセルが編集されたときに実行されるイベントがあります。私は、ユーザーがテーブルに行を追加したかどうかをテストしようとしています。どの表が編集中であるかを知る方法が必要なので、if節を入れて正しいコードにしてエラーを投げないようにします。現時点では
private void DataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
Staff_Time_TBL selectedRow = e.Row.Item as Staff_Time_TBL;
long id = selectedRow.ID;
if (id == -1)
{
// give a GUID and then insert it into the database when saved
selectedRow.ID = DateTime.UtcNow.Ticks;
sql.Staff_Time_TBLs.InsertOnSubmit(selectedRow);
}
try
{
sql.SubmitChanges();
LastSavedTextBlock.Text = "Last saved: " + DateTime.Now.ToLongTimeString();
}
catch(Exception ex)
{
Alerts.Error("Couldn't save changed to the database", "Database Error", ex);
}
}
、以下のコードでは、この表にアクセスされていない場合、明らかにそれは、データグリッドの名前を取得するに
Staff_Time_TBL selectedRow = e.Row.Item as Staff_Time_TBL;
long id = selectedRow.ID;
私の試み、エラーがスローされ、これはちょうどDataGrid
var tblName = sender.GetType().Name;
を返します。
これは変数tblName2
に対してnull
を返し、そのために最後の行で例外をスローします。
string dataGridName = "";
DataObject tblName2 = sender as DataObject;
dataGridName = tblName2.ToString();
が存在するかどうかをチェックしますが、私はsender
DataGridの名前を取得する方法の何かを見つけることができませんすべてのテーブル名とThis threadを取得this threadがあります。
明らかに、これが良い習慣でない場合、私は知りたいと思います。ありがとう。
これはデータグリッドでない場合はエラーになりますか?ありがとう – KyloRen
それはエラーがスローされないように見えます。ありがとう – KyloRen