2017-02-22 10 views
0

クリックしたアイテムのデータベースからIDを取得しようとしています。私はリストビューでクリックしたアイテムのIDを取得するために何をしなければならないのですか?それは、価値としてのゼロと、データベースからのそのIDに従って記述を得る方法を示しています。リストビューで選択したアイテムのデータベースからIDを取得する方法

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

VAR DESC = conn.Query < tutoriallistdb>( "?SNO = tutoriallistdbから選択記述"、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; 

tutoriallistのこの項目のsno属性は割り当てられていません。 は常にゼロです。したがって、snoがゼロの同じデータを1つだけクエリできます。

修正

foreach (var message in query) 
    { 
     name = message.lname; 
     listOfStudents.Add(new tutoriallistdb { lname = name , sno = message.sno }); 
    } 
    tutoriallist.ItemsSource = listOfStudents; 
関連する問題