Infragistics UltraCombo 不会填充数据,尽管正在检索数据

问题描述 投票:0回答:1

我有一个 UltraCombo 框,我需要用来自数据库查询的数据填充它。不幸的是,无论我做什么,数据都不会显示。每次加载表单时,UltraCombo 都是空白的。我已验证数据正在成功检索;我可以使用应该填充 UltraCombo 的相同方法打印查询结果。我已尝试将控件显式添加到 Controls 集合中,并且已尝试为该控件定义一个 DataMember。都没有用。我已经多次重写数据库方法以确保它们与 UltraCombos 兼容。我正在使用 .NET 4.7.0 和 Infragistics 2021.2.

这是我的代码:

public partial class MainForm : Form
{
    public CurrentLayoutControl currentLayoutControl;

    public MainForm()
    {
        InitializeComponent();
        this.currentLayoutControl = new CurrentLayoutControl();
        PopulateLayoutCombo();
    }

    public void PopulateLayoutCombo()
    {
        DataTable layouts = currentLayoutControl.LoadUserGridLayouts(suiteConnectionString);
        currentLayoutControl.DataSource = layouts;
        currentLayoutControl.ValueMember = "User_Grid_Layout_Id";
        currentLayoutControl.DisplayMember = "User_Grid_Layout";
    }
}


public class CurrentLayoutControl : UltraCombo
{
    public DataTable LoadUserGridLayouts(string connString)
    {
        DataTable dataTable = new DataTable();
        SqlConnection conn = new SqlConnection(connString);
        string sql = "USE My_Database; SELECT User_Grid_Layout_Id, User_Grid_Layout FROM app.User_Grid_Layouts";
        SqlCommand command = new SqlCommand(sql, conn);

        conn.Open();
        dataTable = ExecuteQuery(connString, command);
        conn.Close();
        return dataTable;
    }

    private DataTable ExecuteQuery(string connString, SqlCommand command)
    {
        DataTable dataTable = new DataTable();
        SqlDataAdapter adapter = new SqlDataAdapter(command);
        adapter.Fill(dataTable);
        return dataTable;
    }
}
c# winforms infragistics
1个回答
0
投票

我看了这个例子:https://www.infragistics.com/help/winforms/infragistics.win.ultrawingrid~infragistics.win.ultrawingrid.ultracombo

我注意到你在内存中构建了一个

UltraCombo
控件,但它在
MainForm
上没有表示。当你调用它的 UltraCombo 构造函数时,你就把它擦掉了。

这是您现在需要尝试的。

  1. 删除电话

    this.currentLayoutControl = new CurrentLayoutControl();
    ——这是在抹杀设计师。

  2. 将这两个方法从 CurrentLayoutControl 类移到 MainForm 中(如下例所示)

  3. 摆脱 CurrentLayoutControl 类。你不需要它。那门课正在消灭设计器中的那个——Infragistics 为你设置东西,这堂课把它消灭了。

  4. 运行它应该工作。

    public partial class MainForm : 表格 { 公共 CurrentLayoutControl currentLayoutControl;

         public MainForm()
         {
             InitializeComponent();
             PopulateLayoutCombo();
         }
    
         public void PopulateLayoutCombo()
         {
             DataTable layouts = currentLayoutControl.LoadUserGridLayouts(suiteConnectionString);
             currentLayoutControl.DataSource = layouts;
             currentLayoutControl.ValueMember = "User_Grid_Layout_Id";
             currentLayoutControl.DisplayMember = "User_Grid_Layout";
         }
     public DataTable LoadUserGridLayouts(string connString)
     {
         DataTable dataTable = new DataTable();
         SqlConnection conn = new SqlConnection(connString);
         string sql = "USE My_Database; SELECT User_Grid_Layout_Id, User_Grid_Layout FROM app.User_Grid_Layouts";
         SqlCommand command = new SqlCommand(sql, conn);
    
         conn.Open();
         dataTable = ExecuteQuery(connString, command);
         conn.Close();
         return dataTable;
     }
    
     private DataTable ExecuteQuery(string connString, SqlCommand command)
     {
         DataTable dataTable = new DataTable();
         SqlDataAdapter adapter = new SqlDataAdapter(command);
         adapter.Fill(dataTable);
         return dataTable;
     }
    
© www.soinside.com 2019 - 2024. All rights reserved.