簡體   English   中英

從LightSwitch HTML應用程序執行存儲過程

[英]Execute Stored Procedure from LightSwitch HTML Application

我是LightSwitch的新手,因此對我的實體和方法工具集不熟悉。

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

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

我找到了一篇MSDN文章,其中詳細介紹了如何執行此操作,但是它們專注於C#和VB,而不是我在HTML應用程序中使用的Javascript。

此鏈接提供了MSDN C#代碼到Javascript的翻譯,但是關於我對數據集的聲明,我經常遇到錯誤(錯誤0x800a138f - JavaScript runtime error: Unable to get property 'ApplicationData' of undefined or null reference

然后,我決定嘗試使用另一種創建表的方法來執行我的過程,如上面的MSDN文章以及此處所述 但是,該技術最終還需要一個按鈕,該按鈕將我引導至Javascript,在該腳本中,我嘗試使用翻譯后的代碼,導致同樣的錯誤。

按照Eric Erhardt鏈接從MSDN博客獲得的說明,我可以使用無錯誤的C#代碼來調用我的過程,但是又被卡在Button上,該按鈕將LineItemID傳遞給我的表,然后刪除過程。 我的按鈕的“ 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錯誤,使我0x800a138f使用'ApplicationData'。 我的解決方案確實具有一個名為ApplicationData的數據源,該數據源具有一個手動創建的表,該表名為DeleteProjectComment_Operations 同樣,此按鈕位於ViewDetails屏幕上。 ViewDetails有一個鏈接到EditDetails屏幕的按鈕,編輯工作如我所願。

如果最好還是將Delete(刪除)移到EditDetails屏幕上,那么我很樂意這樣做。 或者,如果解決方案是將尺寸表添加到我的解決方案中,請提供有關如何重組我的功能或屏幕的指南

我不知道如何解決需要訪問的實體或如何編輯代碼以將LineItemID傳遞給過程的問題。

還建議我可以使用AJAX來實現我的目標,如果這是建議的途徑,請向我提供一些說明。

預先謝謝您,希望我能提供足夠的細節,但很高興提供更多信息。

通過使用以下執行代碼,應該有可能成功實現Eric Erhardt方法

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;

如果您在此修改后仍然遇到問題,我將擴展saveChanges調用以報告任何錯誤,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM