0

我是LightSwitch的新手,因此不熟悉我的工具集entities and methods從LightSwitch HTML應用程序執行存儲過程

我有一個應用程序使用一個名爲BrattlecubesData的數據源幷包含兩個視圖:TBG_V_TimeLog_DetailsTBG_V_TimeLog_Projects。這兩個數據集通過ProjectID連接並用於顯示兩個不同的瀏覽屏幕。

我的問題是,我想在ViewDetails屏幕上實現一個按鈕,它從維度表(未包括在我的應用程序中的維度表)中刪除當前選定的記錄。我想通過StoredProcedure來實現這一點。

我發現an MSDN article詳細說明了如何做到這一點,但他們專注於C#和VB,而不是我在我的HTML應用程序中使用的Javascript。

THIS LINK提供MSDN C#代碼轉換爲JavaScript的一個翻譯,但我一直得到一個反覆出現的錯誤關於我的我的數據集的聲明(錯誤0x800a138f - JavaScript runtime error: Unable to get property 'ApplicationData' of undefined or null reference

然後我決定嘗試創建的替代技術一個表格,用於執行我的程序,如上面的MSDN文章和also here中所述。然而,這種技術最終還是需要一個按鈕,導致我使用Javascript,在那裏我試圖使用導致相同錯誤的翻譯代碼。

按照Eric Erhardt鏈接的MSDN博客的說明,我有無錯誤的C#代碼來調用我的過程,但再次卡在將LineItemID傳遞到我的表然後過程被刪除的Button上。我的按鈕的Edit Execute Code代碼如下

myapp.ViewRecordDetails.DeleteRecord_execute = function (screen) { 

    var dws = screen.TBG_V_TimeLog_Detail.dataWorkspace; 
    var comment = screen.TBG_V_TimeLog_Detail.selectedItem; 

    var operation = 
     dws.ApplicationData.DeleteProjectComment_Operations.addNew(); 
    operation.LineItemID = comment.LineItemID; 

    dws.ApplicationData.saveChanges(); 
}; 

在運行時,這是給我同樣的錯誤0x800a138f在「的ApplicationData」的止步。我的解決方案確實有一個名爲ApplicationData的數據源,它有一個手動創建的表DeleteProjectComment_Operations。 再次,此按鈕位於ViewDetails屏幕上。 ViewDetails有一個鏈接到EditDetails屏幕的按鈕,編輯按我的意願工作。

如果我最好將刪除移動到我的EditDetails屏幕,我很樂意這樣做。或者,如果解決方案是將維表添加到我的解決方案,請就如何調整自己的功能或屏幕

我在爲如何解決,我需要哪些實體來訪問或如何編輯損失提供指導我的代碼爲了將LineItemID傳遞給我的過程。

也有人建議我可以使用AJAX來實現我的目標,如果這是建議的路線,請向我提供一些關於如何完成的說明。

預先感謝您,我希望我已經提供了足夠的細節,但很樂意提供更多。

回答

1

它應該可以使用下面的執行代碼,成功地實現了Eric Erhardt approach

myapp.ViewRecordDetails.DeleteRecord_execute = function (screen) { 

    var dws = myapp.activeDataWorkspace; 
    var comment = screen.TBG_V_TimeLog_Detail; 

    var operation = dws.ApplicationData.DeleteProjectComment_Operations.addNew(); 
    operation.LineItemID = comment.LineItemID; 

    dws.ApplicationData.saveChanges(); 
}; 

從您的代碼唯一的區別是從到DWS分配的變化:

var dws = screen.TBG_V_TimeLog_Detail.dataWorkspace; 

到:

var dws = myapp.activeDataWorkspace; 

如果您還在遇到pr oblems這個修改之後,我將擴展的SaveChanges調用如下報告任何錯誤:

dws.ApplicationData.saveChanges().then(null, function (errors) { 
    errors.forEach(function (error) { 
     alert(error.message); 
    }); 
}); 
+0

更改DWS您的建議讓我感動超越了'ApplicationData'錯誤,但我收到的'comment.LineItemID同樣的錯誤'現在。我相信這與我的var'comment'設置有關。我試圖用評論的值創建一個警報,但它只保持顯示「未定義」。 – gruff

+0

請您在設計器中提供屏幕截圖,因爲它可能有助於突出顯示問題 –

+0

好的,以下是我的[鏈接](http://s1373.photobucket.com/user/Gruff_from_Stack/media /LightSwitch%20HTML%20ScreenShots/LightSwitch_HTML_DeleteRecordExecute_zpshtr9buuw.png.html)屏幕/按鈕的代碼 以下是[鏈接]的屏幕快照(http://s1373.photobucket.com/user/Gruff_from_Stack/media/LightSwitch%20HTML%20ScreenShots /LightSwitch_HTML_ViewRecordScreen_zps1aatte54.png.html)屏幕樹形結構和數據集 這是我的[link](http://bit.ly/1RzGSFU)表的「插入」代碼執行存儲過程的屏幕快照 – gruff