我的插入脚本:
function insert(item, user, request) {
item.userId= user.userId;
var table = tables.getTable('mytabble');
table.where({
name: item.name
}).read({
success: upsertItem
});
function upsertItem(existingItems) {
if (existingItems.length === 0) {
request.execute();
} else {
item.id = existingItems[0].id;
table.update(item, {
success: function(updatedItem) {
request.respond(200, updatedItem)
}
});
}
}
}
mytable的:
public class myTabble
{
public string Id { get; set; }
[JsonProperty(PropertyName = "name")]
public string name { get; set; }
[JsonProperty(PropertyName = "age")]
public int age { get; set; }
[JsonProperty(PropertyName = "fname")]
public string fname { get; set; }
}
我的插入功能:
private async void InsertTodoItem(myTabble todoItem)
{
await todoTable.InsertAsync(todoItem);
items.Add(todoItem);
}
更新按钮功能
private void Save_Button_Click(object sender, RoutedEventArgs e)
{
try
{
var name1 = name.Text;
var age1 = Convert.ToInt32(age.Text);
var fname1 = fname.Text;
var todoItem = new myTabble { name = name1, age = age1, fname = fname1 };
InsertTodoItem(todoItem);
//NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative));
}
catch
{
MessageBox.Show("Invalid input");
}
}
当我尝试为以前存在的名称插入信息时它已正确更新,但同时我的插入功能出现异常。
答案 0 :(得分:0)
由于异常来自items.add(),您应该验证该项目是否已在items集合中。这样的事情对你有用:
if (items.IndexOf(item) == -1)
{
items.Add(todoItem);
}
根据您要更改的内容,您可能需要删除并阅读从集合中添加项目。