有没有一种方法可以像在WinForms代码中那样轻松地将网格绑定到Xamarin中的表?

时间:2020-09-15 23:13:11

标签: c# mysql xamarin xamarin.forms

我是xamarin的新手,我需要轻松地将网格(或类似的东西)链接到MySql数据库表。 在WinForms中,我是通过与设计者并用几行代码放置网格来实现的,但是使用Xamarin却无能为力。 我当前的项目是带有默认“标签”预设的XamarinForm。

这是WinForm代码:

        try
        {
            MySqlConnection cnn;
            string connetionString = "server=sql7.freesqldatabase.com;database=------;port=----;uid=-------;pwd=------;";
            cnn = new MySqlConnection(connetionString);

            DataTable dt = new DataTable();

            MySqlCommand cmd;
            cnn.Open();

            cmd = cnn.CreateCommand();
            cmd.CommandText = "SELECT * from Products";
            MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
            adapter.Fill(dt);
            dataGridView1.DataSource = dt; //dataGridView WinFrom component

            cnn.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

在Xamarin中有没有办法做到这一点? (我的目标是在一个页面中显示所有数据库表)

1 个答案:

答案 0 :(得分:0)

欢迎您!

虽然 Xamarin 可以直接将bc用作来源,但还有另一种方法可以转换表日期并将其用于控件(例如{ {1}},DataTable等。

例如,ItemSource可以设置如下:

CollectionView

这里DataGrid是表数据的模型,您需要在Xamarin Forms中手动创建它。然后,应用程序将根据模型样式将表数据转换为列表数据。

MyDataGrid.ItemsSource = await TodoItemDatabase.Database.Table<TodoItem>().ToListAsync();

关于在Xamarin中使用数据库,您可以参考this official document。此处有a sample project供参考。上面的代码 TodoItemDatabase 类也基于此示例。

这是 TodoItemDatabase 类:

TodoItem

Constants 类,其中包含数据库名称和其他内容。

using SQLite;
public class TodoItem
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }
    public string Name { get; set; }
    public string Notes { get; set; }
    public bool Done { get; set; }
}