2013-02-01 84 views
-1

我正在修改一個非常複雜的表單。該表格有多個子表格。最初的化身是創建所有這些隱藏的面板,並且這樣(沒有我的設計,我試圖修復)。用戶控件嵌套的FormView,事件沒有正確觸發

我最終得到的是一個FormView,其中編輯模式由一個典型的表單組成,並且它有一個子表單。現在,子窗體在ReadOnly模式下顯示一個GridView,它與一個回調編輯方法綁定,該方法將將子窗體的索引更改爲適當的並將其更改爲Edit模式。所有這些數據都是通過SqlDataObjects。

爲了簡化這個過程,我將子窗體放到了一個usercontrol中,並且在主窗體的Edit和ReadOnly部分中都包含了用戶控件。因此,當主窗體是ReadOnly時,它顯示了用戶控件的默認模式,即ReadOnly,從而顯示網格。這部分很好地工作。

當用戶在編輯模式下打開主窗體時,子窗體按預期方式以網格模式顯示(並且網格中包含「編輯」按鈕的列被渲染爲可見)。這工作也很好。

當我點擊編輯按鈕並將窗體更改爲編輯模式時,一切都按預期工作。我可以看到,通過調整的子表單的流程正在按預期進行。

現在,當我點擊更新按鈕,這只是一個簡單的LinkBut​​ton,它具有CommandName設置(就像任何其他工作表單視圖一樣),我注意到回調會轉到子窗體(跳過mainform的數據綁定 - - 這也是期望的),但更新調用永遠不會呈現給SqlDataObject。

我有一個OnUpdating/OnInserting/OnSelecting爲我的每個SqlDataObjects只是爲了調試的目的,它從來沒有命中。回發後,用戶控件直接進入ReadOnly模式。我不認爲這是一個DataBinding問題。

任何人都看到這與嵌套窗體控件?具體來說,usercontrols住房FormView嵌套在一個FormView?

我根本不可能丟棄整個用戶控件,只是把窗體直接在裏面MainForm的,但我寧願知道正確的解決方案,只是玩,直到它的工作原理...

+0

看來,與場景中的更大的潛在的問題是子窗體正在失去它在回傳formviewmode狀態,而MainForm中不。感謝您的-1評論。在不同的博客上似乎有幾個類似的問題,但在典型的方式看來,一旦他們發現它們不分享知識:( –

回答

0

看來,處理來自嵌套式視圖的回調需要將其視爲動態控件,即使它是模板的一部分。當子窗體強制爲編輯模式(通過將其設置爲默認值)時,它按預期處理回發。當它保留默認設置時,它無法按預期處理回發。

我想介紹一些示例代碼,我可能會在稍後的時間這樣做(這就是爲什麼我假設我在-1分鐘內發佈-1)但似乎沒有功能有關嵌套表格的樣本(反正工作的樣本)。

簡短的解決方法是將第二個窗體放在第一個窗體的外面(但仍在同一個用戶控件中),然後爲更改檢測執行一些回調。

雖這麼說,如果你有一個表單中的表單,和他們B

相關問題