从其他用户控件C#调用SQL方法

时间:2018-07-21 08:16:30

标签: c# sql-server wpf

很抱歉,这对我来说是新的。我正在运行WPF,并尝试使用两个不同的UserControl将SQL数据库中的数据调用到网格中。

一个将包含将在其中显示它的DataGrid。第二个是左侧的控制面板,其中包括一个用于运行SQL查询并(希望)以另一种形式填充DataGrid的按钮。

我可以使用此按钮调用一个简单的方法(显示消息框),但是由于某些原因无法执行此操作。如何在“控件” UserControl上按下该按钮以运行SQL查询并将其填充在“主”控件上?任何帮助将不胜感激。

在“控件” UserControl上,我有:

def create(conn, params) do
  IO.puts(options)
end

然后在具有DataGrid的较大的UserControl上,我具有以下内容:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Data.SqlClient;
    using System.Data;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;   

namespace WpfApp2
{

public partial class PortfolioControl : UserControl
{

    public PortfolioControl()
    {
        InitializeComponent();          
    } 

    public void button1_Click(object sender, RoutedEventArgs e)
    {
        Portfolio Portfolio1 = new Portfolio(this);
        FillGridTest();
    }

public void FillGridTest()
    {
        Portfolio Portfolio1 = new Portfolio(this);

        string connectionString = "user id=username etc...";
        string sql = "SELECT * FROM etc...";
        SqlConnection connection = new SqlConnection(connectionString);
        SqlDataAdapter dataadapter = new SqlDataAdapter(sql, connection);
        DataSet ds = new DataSet();
        connection.Open();
        dataadapter.Fill(ds, "PortfolioReport");
        Portfolio1.grid1.ItemsSource = ds.Tables["PortfolioReport"].DefaultView;
    }
}

}

“主”控件上的XAML是:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Data.SqlClient;
    using System.Data;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;

namespace WpfApp2
{

public partial class Portfolio : UserControl
{
    public Portfolio()
    {
        InitializeComponent();           
    }

    private PortfolioControl _PortfolioControl;
    public Portfolio(PortfolioControl masterForm)
    {
        InitializeComponent();
        _PortfolioControl = masterForm;

    }
}

1 个答案:

答案 0 :(得分:0)

在这种方法中

public void FillGridTest()
{
    Portfolio Portfolio1 = new Portfolio(this);
    ...
    Portfolio1.grid1.ItemsSource = ds.Tables["PortfolioReport"].DefaultView;
}

控件投资组合已创建,但未显示在任何地方。