2016-07-25 5 views
0

を使用して更新するための機能を使用するには、私は保存と呼ばれるボタンがあります。 (Tab1)からグリッドをダブルクリックします。データがテキストボックスにロードされ、Tab2で編集できるようになります。私のすべてのフィールドはTab2にあり、データベースに保存することができます。ページを読み込んでTab2をクリックします。すべてのテキストボックスを入力して[保存]ボタンをクリックします。今私は、同じ目的球私は挿入と更新を実行するための保存機能を使用したいはどのように挿入して、同じボタン名

を使用して、保存と呼ばれる同じTAB2 ABDボタンを使って編集したいです。どうやってやるの。 Idを確認するifステートメントは確かですが、それを行う方法はわかりません。

ワーキングコードを挿入:

public async Task<bool> AddFleet(FleetModel fleet) 
    { 
     bool IsDone = false; 
     try 
     { 
      using (SidDbContext db = new SidDbContext()) 
      { 
       FleetVehicle fv = new FleetVehicle() 
       { 
        BranchId = fleet.BranchId, 
        Description = fleet.Description, 
        Registration = fleet.Registration 

       }; 
       db.FleetVehicle.Add(fv); 
       db.SaveChanges(); 

       Fleet _fleet = new Fleet 
       { 
        FitmentTeamId = Convert.ToInt32(fleet.FitmentTeamId), 
        Capacity = fleet.Capacity, 
        BranchId = fleet.BranchId, 
        Active = true      
       }; 
       var results = db.Fleet.Add(_fleet); 
       db.SaveChanges(); 

       db.FleetVehicleLink.Add(new FleetVehicleLink { FleetId = _fleet.Id ,FleetVehicleId = fv .Id}); 
       db.SaveChanges(); 
       //add team 

       foreach (var u in fleet.TeamMember1) 
       { 
        db.FitmentUsersLink.Add(new FitmentUsersLink { FitmentTeamId = _fleet.Id, UsersId = u });      
       } 

       db.SaveChanges(); 

       IsDone = true; 
      } 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     return IsDone = true; 
    } 

//

function AddFleets() { 

var multiSelect = $("#ddlTeamMember").data("kendoMultiSelect"); 
var Fleet = { 
    Id: 0, 
    BranchId: $('#ddlOutlet').val(), 
    Registration: $('#txtNewVehicle').val(), 
    Description: $('#txtVehicleDescription').val(), 
    FitmentTeamId: $('#ddlTeamName').val(), 
    TeamMember1: multiSelect.value(), 
    Capacity: $("#ddlCapacity").val(), 
    Active: true 
}; 

$.ajax({ 
    url: BaseUrl + "Fleet/AddFleet", 
    global: false, 
    type: 'Post', 
    data: Fleet 
}); 
success: function(data) 
{ 
    alert('added successfully'); 
}; 
error: function(data) 
{ 
    alert('error occurred'); 
} 

}

答えて

0

の下にあなたが、 および2の方法「InsertOrSave(ブール値isInsert)」ハンドルの挿入を作成し、機能を追加する必要がありますように通過型パラメータのためのボタンの

<input type="button" value="save" onclick="AddFleets(type)"/> 

とJavaScriptのコードは次のようになりますこのハンドラは、適切なフラグを使用してビジネスロジック関数を呼び出します。

そのように、あなたはビジネスロジックとGUIロジック間で分けます。そして将来的には、あなたは((ハンドラ・メソッドを変更する検証を追加し、ログ、あなたのAddFleet法では、ビジネス・ロジック

EDIT

に影響を与えることなく、イベントなど。)上げることができる:

1 )、fleetModel(現在そうであるように)からあなたFleetVehicleを作成

2)FleetVehicleがDBに存在するかどうかを確認、のようなもの:

 FleetVehicle fv = new FleetVehicle() 
       { 
        BranchId = fleet.BranchId, 
        Description = fleet.Description, 
        Registration = fleet.Registration 

       }; 
    if (db.FleetVehicle.Contains(fv) 
{ 
//update the item 
} 
else 
{ 
//add the vehicle 
} 
db.SaveChanges() 

変更を保存したら、一度だけ変更を保存してください。 usingステートメントの文脈で、あなたが行ったすべての変更は集約され、ローカルに保存されます。 "SaveChanges()"を呼び出すとDBへの呼び出しが生成され、複数回実行するのは冗長です。

+0

提供されたコードに従うように私に指示してください。 –

+0

ありがとうございました...これは現在正常に動作しています –

0

変数フラグを作成します。
データがすでにデータベースに存在しているかどうかをチェックします。はい

偽その後、フラット設定されていない場合はtrueフラグを= =設定した場合、今、あなたは

if(flag=true) then 
update query 
else 
insert query 

はそれに役立つことを願っていますようにフラグに条件を追加することができます。

+0

私の更新されたコードを見て、 code pprovide –

0

あなたは、コールが挿入または更新のためのものであることはJavaScript側でチェックする関数に型パラメータを渡すことができます。 Ex。

function AddFleets(type){ 

    if(type == "insert") 
    { 
     //Insert code 
    } 
    else 
    { 
     //update code 
    } 
} 
+0

更新されたコードを見て、コードから編集してください。 –

0

これは単純な作業であり、あなたはこのようにそれを行うことができます。あなたに

    1. bool型のあなたのViewModelに新しいプロパティを追加し、偽 に初期化(public bool IsEdit {get;set;} = false EX)表示この新しいプロパティの非表示フィールドを追加します。 (例:@Html.HiddenFor(m=>m.IsEdit);グリッドをダブルクリックイベントで

    2. 、あなたが編集フォームでデータをロードするとき、あなたはIsEdit = trueの場合、その後をチェックする必要があり、あなたのコントローラでは、真の

    3. にIsEditの値を変更する必要があります

    これもIDフィールドで行うことができます。隠しフィールドを持つことができます。コントローラでは、ID> 0の場合は更新、ID = 0ならチェックします。新しいものですか?

  • 関連する問題