2017-08-27 25 views
1

所以我做了一些搜索结果最少的Google搜索,但结果仍然如此。会发生什么事是DB在CalendarEvents中有5个条目(基本上是将来的事件名称/地点/日期/时间等)。我从我的数据库中获取这些信息并将它们显示在列表视图中。如何删除按钮点击后基于它的ID列表视图项目? (C#UWP)

现在我需要一个管理员能够基于它的行删除CalendarEvents,就像这样:

enter image description here

所以每当管理员单击删除按钮,它应该得到的ListViewItem的的id该按钮属于哪个按钮(如数据库中的1-5,id = CalendarEventsId),然后从数据库中删除正确的CalendarEvent。

到目前为止,我想出了下面的代码:

private async void tbdelete_Tapped(object sender, TappedRoutedEventArgs e) 
    { 
     var item = sender as DependencyObject; 

    while(!(item is ListViewItem)) 
    { 
     item = VisualTreeHelper.GetParent(item); 
    } 

    var id = ((CalendarEvent) item).CalendarEventId; 

    var weburidelete = "http://localhost:64288/api/calendarevents/" + id; 

    HttpClient client = new HttpClient(); 

    var res = await client.DeleteAsync(weburidelete); 
} 

我得到一个错误 “VAR ID =((CalendarEvent)...”,它说的DependencyObject ““不能类型转换” 来“CalendarEvent”

因此,例如,如果管理员在第三行中单击“删除”按钮,则应在数据库中删除Id = 3的CalendarEvent(而不是listviewitemindex,数据库中的ID)。因此,如果我添加5个项目,删除所有5个,然后再加5,我相信新的5个项目的ID将在6-10范围内。

有人知道这里有什么问题吗?或者是否有人知道这样做的另一种方法&基于ID删除正确的listviewitem?

+0

您可以使用内置图像托管发布您的图像吗?即ctrl + G –

回答

1

只需获取按钮的DataContext并将其投射出去。

var item = sender as Button; 
var data = item.DataContext; 

while(!(item is ListViewItem)) 
{ 
    item = VisualTreeHelper.GetParent(item); 
} 

var id = ((CalendarEvent)data).CalendarEventId; 
0

好吧,我所做的所有工作都是使用Jessica的方式来获取我的DataContext,然后完全删除“while”-loop。这是班级现在的样子,它的工作原理!

private async void tbdelete_Tapped(object sender, TappedRoutedEventArgs e) 
    { 
     var item = sender as Button; 
     var data = item.DataContext; 

     var id = ((CalendarEvent)data).CalendarEventId; 

     var weburidelete = "http://localhost:64288/api/calendarevents/" + id; 

     HttpClient client = new HttpClient(); 

     var res = await client.DeleteAsync(weburidelete); 

     this.Frame.Navigate(typeof(AdminAgenda), null); 
    } 
相关问题