我有一个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;
}
}
2条答案
按热度按时间kgsdhlau1#
我看了一下例子:https://www.infragistics.com/help/winforms/infragistics.win.ultrawingrid~infragistics.win.ultrawingrid.ultracombo
我注意到你在内存中构造了一个
UltraCombo
控件,但它在MainForm
上没有表示。当您调用UltraCombo构造函数时,您会清除它。这是你现在需要尝试的。
1.删除调用
this.currentLayoutControl = new CurrentLayoutControl();
--这是删除设计器调用。1.将两个方法从CurrentLayoutControl类移到MainForm中(如我在下面的示例中所示)
1.删除CurrentLayoutControl类。你不需要它这个类正在清除设计器中的那个-- Infragistics为你设置了一些东西,这个类将它清除掉。
1.运行它,它 * 应该 * 工作。
public partial class MainForm:String { public String_String_String_String_String_String_String_String_String_String_String_String_String_String_String_String_String_String_String_String
cnwbcb6i2#
在代码中有很多事情没有发生,因为您没有使用设计器将
UltraCombo
添加到应用程序表单中。您可以尝试以下修复。
将以下两行从constructor移动到
Load
事件处理程序,并更新如下所示:至少,在此之后,您将在组合框中看到所需的项目。此外,您需要将坐标设置到表单上所需的位置。
我建议在Visual Studio中使用designer:中将有助于自动对
UltraCombo
控件进行大量调整。