c# - 在c#中单击按钮时显示包含sql数据的消息框

标签 c# mysql visual-studio xaml

我正在制作一个程序,将我的数据显示为图像和标签。这是我的程序未单击时的示例:

未点击时: Screen Shot

点击时 Screen Shot

问题是当我单击其中一张图像时。如何将该图像的 id(我的 SQL 中的“id_movie”)显示到 MessageBox ViewModel 类中。

public class VModel
{
    public VModel()
    {
        Clicked = new ClickedCommand(this);
        DataTable dt = new DataTable();

        using (MySqlConnection connection = new MySqlConnection("SERVER=localhost;" + "DATABASE=library;" + "UID=root;" + "PASSWORD=;"))
        {
           MySqlDataAdapter adapter = new MySqlDataAdapter();
           adapter.SelectCommand = new MySqlCommand("Select * from movie_list", connection);
           adapter.Fill(dt);
        }
        Library = dt.DefaultView;
    }
    public ICommand Clicked { get; set; }
    public DataView Library { get; private set; }
}

点击类

internal class ClickedCommand : ICommand
{
    private VModel vModel;

    public ClickedCommand(VModel vModel)
    {
        this.vModel = vModel;
    }

    public event EventHandler CanExecuteChanged { add { } remove { } }

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public void Execute(object parameter)
    {
        MessageBox.Show("the id that got clicked");
    }
}

最佳答案

如果您只需要数据库的数据,可以在初始化ClickedCommand时将dt作为参数给出。

public class VModel
{
    public ICommand Clicked { get; set; }
    public DataView Library { get; private set; }

    public VModel()
    {
        DataTable dt = new DataTable();

        using (MySqlConnection connection = new MySqlConnection("SERVER=localhost;" + "DATABASE=library;" + "UID=root;" + "PASSWORD=;"))
        {
            MySqlDataAdapter adapter = new MySqlDataAdapter();
            adapter.SelectCommand = new MySqlCommand("Select * from movie_list", connection);
            adapter.Fill(dt);
        }

        var Library = dt.DefaultView;
        // this = viewModel or Library as parameter
        var Clicked = new ClickedCommand(this);
    }
}

Execute 方法中,您可以访问 vModelLibrary 字段,具体取决于您作为参数提供的内容并显示数据。

internal class ClickedCommand : ICommand
{
    private VModel _vModel;
    // private DataView _library;

    public ClickedCommand(VModel vModel)
    {
        _vModel = vModel;
        // _library = library;
    }

    public void Execute(object parameter)
    {
        int rowIndex;
        int.TryParse(((string[])parameter)[0], out rowIndex);
        var stringToSearch = ((string[]) parameter)[1];
        // however you access it here.
        MessageBox.Show(_vModel.Library[rowIndex][stringToSearch]);
        // MessageBox.Show(_library[rowIndex][stringToSearch]);
    }
}

关于c# - 在c#中单击按钮时显示包含sql数据的消息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53442357/

相关文章:

mysql - Django 1.8 中的复杂注释

jquery - 提交后在同一页面的表格中显示 html 表单值

mysql - 将mysql数据库中的表的所有列更改为大写

.net - 是否可以使用 Visual Studio 2008 开发 ".NET framework 4.0"[beta] 应用程序?

c++ - 什么是 C++ 优化和 Visual Studio 中的整个程序优化

c# - 引用 C++/CLI 项目,C++/CLI 枚举未显示在 C# 中

c# - 使用http创建WCF服务

c# - 在哪里设置 <gcAllowVeryLargeObjects>?

C# WinForm - 使用 DateTime Now 和标签颜色的日期斜体

c# - 如何使用 VS 的自动选项设置/获取值