2017-02-22 7 views
0

Я пытаюсь извлечь идентификатор из базы данных щелкнутого элемента. Что мне нужно сделать, чтобы получить идентификатор щелкнутого элемента в виде списка. Он показывает нуль как значение и как получить описание в соответствии с этим идентификатором из базы данных.Как получить идентификатор из базы данных выбранного элемента в listview

namespace javalearningapp_v1 { 
    public sealed partial class tutorial: Page { 
     string path; 
     SQLite.Net.SQLiteConnection conn; 
     private List <tutoriallistdb> listOfStudents = new List <tutoriallistdb>(); 
     public tutorial() { 
      this.InitializeComponent(); 
      path = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "java2db.sqlite"); 
      conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path); 
      conn.CreateTable <tutoriallistdb>(); 
      Retrieve(); 
     } 
     public class tutoriallistdb { 
      [PrimaryKey] 
      public Int32 sno { 
       get; 
       set; 
      } 
      public string lname { 
       get; 
       set; 
      } 
      public string description { 
       get; 
       set; 
      } 
     } 

     private void Retrieve() { 
      var query = conn.Table <tutoriallistdb>(); 
      string name = ""; 

      foreach(var message in query) { 
       name = message.lname; 
       listOfStudents.Add(new tutoriallistdb { 
        lname = name 
       }); 

      } 
      tutoriallist.ItemsSource = listOfStudents; 

     } 

     private void tutoriallist_ItemClick(object sender, ItemClickEventArgs e) { 
      tutoriallistdb item = (tutoriallistdb) e.ClickedItem; 
      var desc = conn.Query <tutoriallistdb> ("select description from tutoriallistdb where sno=?", a.sno); 
      Frame.Navigate(typeof(tutdesc), desc); 
     } 
    } 
} 

ответ

0

вар убывание = conn.Query < tutoriallistdb> ("выберите описание от tutoriallistdb, где Sno =?", A.sno);

Проблема, похоже, связана с типом параметров, которые вы передали. Для предложения Sql я предложил вам передать параметр типа строки.

Использование

private void tutoriallist_ItemClick(object sender, ItemClickEventArgs e) 
{ 
    tutoriallistdb item = (tutoriallistdb)e.ClickedItem; 
    var desc = conn.Query<tutoriallistdb>("select description from tutoriallistdb where sno=?", item.sno.ToString()); 
    Frame.Navigate(typeof(tutdesc), desc); 
} 

PS я нашел неправильную логику в вашем коде.

foreach (var message in query) 
{ 
    name = message.lname; 
    listOfStudents.Add(new tutoriallistdb { lname = name}); 
} 
tutoriallist.ItemsSource = listOfStudents; 

Атрибут Sno этого элемента в tutoriallist не назначен. это всегда ноль. Таким образом, вы можете запросить только одни данные, где sno равно нулю.

Изменить

foreach (var message in query) 
    { 
     name = message.lname; 
     listOfStudents.Add(new tutoriallistdb { lname = name , sno = message.sno }); 
    } 
    tutoriallist.ItemsSource = listOfStudents; 
Смежные вопросы