2017-08-27 26 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); 
    } 
相關問題