Я создаю кроссплатформенное мобильное приложение с формами Xamarin.Проблема, с которой я сейчас застрял, заключается в следующем: у меня есть страница, на которой я хочу отобразить информацию из базы данных в виде ListView
на странице.Также в базе данных sqlite есть две таблицы.
Сначала я создал переопределение метода OnAppearing
для страницы, чтобы данные отображались при появлении страницы.
Затем внутри этого я открыл соединение sqlite следующим образом:
using(SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
{
//about to put the code here in the next step
}
Затем внутри этого я попытался создать таблицу из базы данных.например (под «ModelName» я имею в виду имя класса, в котором хранится модель, соответствующая данным в базе данных sqlite)
conn.CreateTable<ModelName>
, а затем попытался использовать запроса затем установите его как ItemSource для ListView следующим образом:
ListViewName.ItemSource = conn.Query<ModelName>("SELECT * FROM databaseTableName;");
На внешнем интерфейсе я установил привязку данных следующим образом.
<ListView x:Name="ListViewName">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding ModelName}" Detail="{Binding ModelName}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Примечание. Я также пытался установить привязку следующим образом
Text="{Binding ColumnNameFromTable}"
, когда я запускаю ее, я получаю сообщение об ошибке, в котором говорится, что таблицане существует, но у меня есть база данных sqlite в проекте (в папке активов проекта android и в папке ресурсов проекта iOS), и таблица есть.Так что я не знаю, где я иду не так
Также, чтобы ответить на вопрос о том, что
(App.DatabaseLocation)
имеет следующие значения в MainActivity.cs и AppDelegate.cs соответственно
//in MainActivity.cs
string dbName = "DatabaseName.db";
string folderPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
string fullPath = Path.Combine(folderPath, dbName);
LoadApplication(new App(fullPath));
//in AppDelegate.cs
string dbName = "DatabaseName.db";
string folderPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),"..", "Library");
string fullPath = Path.Combine(folderPath, dbName);
LoadApplication(new App(fullPath));
Я ценю любую помощь всем, кто мудрее меня.Спасибо, что нашли время, чтобы прочитать и, возможно, ответить на мой вопрос.Я должен тебе мою вечную благодарность!