如何使用一个功能使用相同的按钮名称插入和更新
How to use one function to Insert and update using the same button name
我有一个名为“保存”的按钮。当您双击来自(Tab1)的网格时。数据正在加载到文本框,以便您可以在 Tab2 上进行编辑。所以我所有的字段都在 Tab2 上,它允许您保存到数据库中。当您加载页面并单击 Tab2 时。您将填写所有文本框并单击保存按钮。现在我想使用同一个名为 Save 的 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');
}
}
创建变量标志。
检查数据是否已存在于数据库中。如果是,则设置 flag=true 如果不是,则设置 flat=false
现在您可以在标志上添加条件,例如
if(flag=true) then
update query
else
insert query
希望对您有所帮助。
您可以将类型参数传递给函数以在 JavaScript 端检查调用是用于插入还是更新。
前任。用于传递类型参数的按钮数量
<input type="button" value="save" onclick="AddFleets(type)"/>
而 JavaScript 代码如下所示
function AddFleets(type){
if(type == "insert")
{
//Insert code
}
else
{
//update code
}
}
您应该创建一个方法 "InsertOrSave(bool isInsert)" 来处理插入和添加功能,
和两个按钮点击处理程序(一个用于保存,另一个用于插入),
此处理程序将使用适当的标志调用业务逻辑函数。
这样,您就可以将业务逻辑和 GUI 逻辑分开。将来,您可以在不影响业务逻辑的情况下更改处理程序方法((添加验证、日志、引发事件等)
编辑
在您的 AddFleet 方法中:
1) 从 fleetModel 创建你的 FleetVehicle(就像你现在做的那样),
2) 检查数据库中是否存在 FleetVehicle,类似于:
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()" 生成了对数据库的调用,多次调用是多余的。
这是一项简单的任务,您可以这样做:
- 向您的 bool 类型的 ViewModel 添加一个新的 属性,并初始化为 false
(例如:
public bool IsEdit {get;set;} = false
)
在您的视图中为这个新 属性 添加一个隐藏字段;
(例如:@Html.HiddenFor(m=>m.IsEdit)
;
在网格双击事件中,当您在编辑表单中加载数据时,您必须将 IsEdit 的值更改为 true
- 在您的控制器中,您需要检查 IsEdit=true 然后进行更新,否则插入新记录。
这也可以用 ID 字段来完成,你可以有一个隐藏字段,在控制器中你检查如果 ID>0 那么是更新,或者 ID=0,那么是新的!
我有一个名为“保存”的按钮。当您双击来自(Tab1)的网格时。数据正在加载到文本框,以便您可以在 Tab2 上进行编辑。所以我所有的字段都在 Tab2 上,它允许您保存到数据库中。当您加载页面并单击 Tab2 时。您将填写所有文本框并单击保存按钮。现在我想使用同一个名为 Save 的 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');
}
}
创建变量标志。
检查数据是否已存在于数据库中。如果是,则设置 flag=true 如果不是,则设置 flat=false
现在您可以在标志上添加条件,例如
if(flag=true) then
update query
else
insert query
希望对您有所帮助。
您可以将类型参数传递给函数以在 JavaScript 端检查调用是用于插入还是更新。 前任。用于传递类型参数的按钮数量
<input type="button" value="save" onclick="AddFleets(type)"/>
而 JavaScript 代码如下所示
function AddFleets(type){
if(type == "insert")
{
//Insert code
}
else
{
//update code
}
}
您应该创建一个方法 "InsertOrSave(bool isInsert)" 来处理插入和添加功能, 和两个按钮点击处理程序(一个用于保存,另一个用于插入), 此处理程序将使用适当的标志调用业务逻辑函数。
这样,您就可以将业务逻辑和 GUI 逻辑分开。将来,您可以在不影响业务逻辑的情况下更改处理程序方法((添加验证、日志、引发事件等)
编辑
在您的 AddFleet 方法中:
1) 从 fleetModel 创建你的 FleetVehicle(就像你现在做的那样),
2) 检查数据库中是否存在 FleetVehicle,类似于:
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()" 生成了对数据库的调用,多次调用是多余的。
这是一项简单的任务,您可以这样做:
- 向您的 bool 类型的 ViewModel 添加一个新的 属性,并初始化为 false
(例如:
public bool IsEdit {get;set;} = false
) 在您的视图中为这个新 属性 添加一个隐藏字段; (例如:
@Html.HiddenFor(m=>m.IsEdit)
;在网格双击事件中,当您在编辑表单中加载数据时,您必须将 IsEdit 的值更改为 true
- 在您的控制器中,您需要检查 IsEdit=true 然后进行更新,否则插入新记录。
这也可以用 ID 字段来完成,你可以有一个隐藏字段,在控制器中你检查如果 ID>0 那么是更新,或者 ID=0,那么是新的!