2012-01-16 33 views
3

我有一個DataGrid(目前的.NET 3.5 WPFToolkit版本,但我可以使用.NET 4.0的開箱即用的DataGrid,如果需要的話)綁定到一組對象。數據網格中的三列表示用作從數據庫中獲取其他信息的關鍵字的信息片段。這些其他信息用於計算以填充數據網格的其他列。如何禁止在我的DataGrid中添加不完整的行?

一旦用戶輸入這三個字段,並且這些字段中的數據組合存在於數據庫中,則該行被認爲對於添加到收集有效。用戶現在也可以自由編輯該行中的其他列。一旦用戶給出任何其他列的數據,三個「關鍵」字段被視爲「鎖定」 - 用戶可能不再編輯它們。更改該信息的唯一方法是刪除整行並添加新行。

1)從UX的角度來看,處理這個問題的最好方法是什麼?我是否應允許用戶在任何列中輸入數據,「緩存」其條目,然後只在輸入「密鑰」數據後才一次性執行我的計算?或者,我應該限制用戶只輸入「密鑰」數據,然後允許用戶在其他列中輸入數據?

2)在數據網格中實現上述的策略(我需要的事件處理程序等)是什麼?我如何纔不允許將新行添加到數據綁定集合中,直到它具有有效的「關鍵」數據,或者是否允許向新行添加驗證錯誤並以某種方式跟蹤用戶可以繼續編輯部分完整行的「關鍵」列,但不編輯數據網格中的其他現有行?

+0

@jberger - 到目前爲止,我只是有一個驗證錯誤,直到三個「關鍵」字段描述有效數據(即,我可以用提供的「關鍵」字段從數據庫中找到額外數據),因此數據網格將不會在該行保留編輯模式,直到這些字段有效。但是,這並不能阻止用戶填寫新行的非「關鍵字段」。並且,在用戶在「鍵」字段(集合綁定數據網格的默認行爲)中輸入任何內容之前,將新行添加到集合中。對於從這裏出發的任何類型的方向,我都不知所措,這表明了一些承諾。 – 2012-01-16 20:11:12

+0

您可能想要問[UX](http://ux.stackexchange.com/)中的UX部分。一旦你有UX答案,你可以開始解決方案的下一部分。 – 2012-01-16 20:27:55

+0

http://ux.stackexchange.com/q/16178/8978 – 2012-01-17 15:02:58

回答

0

這是我做我的具體情況:

1)來處理這種情況的最好辦法是給用戶最大的靈活性成爲可能。這意味着允許用戶在特定條件下編輯密鑰數據,但不限制用戶首先輸入密鑰數據。

2)實施策略有兩部分。首先,定義何時不允許使用編輯鍵數據,並將樣式添加到datagrid列中,這些列將鍵值列切換到基於觸發器的只讀模式。其次,當關鍵數據發生變化時,執行幕後的所有邏輯,就像使用舊關鍵數據刪除該行,然後使用新關鍵數據創建該行。這將涵蓋我需要發生的所有副作用。

相關問題