我想知道如何将一个sql Server数据库分配给comboBox的ItemSource属性 (在WPF应用程序中)。 我将数据源分配给项目,但不知道如何分配给该属性。
最好的祝福
.NET在linux上,〜/文件夹是错误的?
在桌面下打开和closureswindows 8触摸键盘tabtip
使用wpf在窗口的任何地方检测文本框
类似于.NET中等待定时器
EndPoint:C#中的语法 – 这是什么?
你可以尝试这样的..你可以像下面这样绑定组合框的项目源属性..
的ItemsSource = “{结合}”
编辑:
连接字符串:
你可以添加控制事件或类,但它应该在WPF应用程序窗口。
如果您在Visual Studio或Visual C#中创建新应用程序,或者创建window1.xaml。 你需要添加连接字符串基本上在类或事件在window1.xaml不在app.config或app.xaml。
连接字符串在类中定义:
这里是通过创建一个类(它的sql连接器,而不是我在第一个显示的oleDb)的例子:
public class ConnectionHelper { public static sqlConnection GetConnection() { string connectionStr = "Data Source=MICROSOFT-JIGUO;Initial Catalog=CompanyTestDB;Integrated Security=True"; sqlConnection conn = new sqlConnection(connectionStr); return conn; } }
你可以在你的方法中使用这个类:
sqlConnection conn = ConnectionHelper.GetConnection();
<Window ....... Loaded="OnLoad" > <GrID> <ComboBox Height="18" SelectionChanged="cmbcategory_SelectionChanged" ItemsSource="{Binding}" HorizontalAlignment="Right" margin="0,92,17,0" name="cmbcategory" VerticalAlignment="top" WIDth="176" borderBrush="#FFFFFFFF" Selectedindex="0"/> </GrID> </Window>
加载函数可以赋值给组合框
private voID OnLoad(object sender,System.EventArgs e) { ListCategorIEs(); } private voID ListCategorIEs() { sqlCon = new sqlConnection(); sqlCon.ConnectionString = Common.GetConnectionString(); cmd = new sqlCommand(); cmd.Connection = sqlCon; cmd.CommandType = CommandType.Text; cmd.CommandText = "SELECT * FROM CategorIEs"; sqlDa = new sqlDataAdapter(); sqlDa.SelectCommand = cmd; ds = new DataSet(); try { sqlDa.Fill(ds,"category"); DaTarow nRow = ds.tables["category"].NewRow(); nRow["categoryname"] = "List All"; nRow["categoryID"] = "0"; ds.tables["category"].Rows.InsertAt(nRow,0); //Binding the data to the comboBox. cmbcategory.DataContext = ds.tables["category"].defaultview; //To display category name (displayMember in Visual Studio 2005) cmbcategory.displayMemberPath = ds.tables["category"].Columns["categoryname"].ToString(); //To store the ID as hIDden (ValueMember in Visual Studio 2005) cmbcategory.SelectedValuePath = ds.tables["category"].Columns["categoryID"].ToString(); } catch (Exception ex) { MessageBox.Show("An error occurred while loading categorIEs."); } finally { sqlDa.dispose(); cmd.dispose(); sqlCon.dispose(); } }
如果有其他人登陆(像我这样做),这里是pratap k代码的改进版本。 只需传递6个参数到这个方法,它会填充你的组合框。
connectionString – 连接到数据库的连接字符串的名称。 如果您希望在其他课程中设置它,只需调用参考,则可以相应地修改代码。
comboBox – 您要填写的组合框的名称
查询 – 您查询从数据库中获取数据
defaultValue – 您要设置为组合框的默认值
itemText – 这是您要在列表框中显示的数据。 这是数据库列的名称,并在您的SELECT查询中。
itemValue – 这是您想要关联到组合框的项目的值。 这也是您的SELECT查询中的一列,是您的数据库中的一列的名称。 (如果你不需要它,也可以从代码和参数中删除它。
另外,您可以将这些值传递给XAML代码中的值(displayMemberPath和SelectedValuePath)。
public bool fillComboBox(string connectionString,System.windows.Controls.ComboBox comboBox,string query,string defaultValue,string itemText,string itemValue) { sqlCommand sqlcmd = new sqlCommand(); sqlDataAdapter sqladp = new sqlDataAdapter(); DataSet ds = new DataSet(); try { using (sqlConnection _sqlconTeam = new sqlConnection(ConfigurationManager.ConnectionStrings[connectionString].ConnectionString)) { sqlcmd.Connection = _sqlconTeam; sqlcmd.CommandType = CommandType.Text; sqlcmd.CommandText = query; _sqlconTeam.open(); sqladp.SelectCommand = sqlcmd; sqladp.Fill(ds,"defaulttable"); DaTarow nRow = ds.tables["defaulttable"].NewRow(); nRow[itemText] = defaultValue; nRow[itemValue] = "-1"; ds.tables["defaulttable"].Rows.InsertAt(nRow,0); comboBox.DataContext = ds.tables["defaulttable"].defaultview; comboBox.displayMemberPath = ds.tables["defaulttable"].Columns[0].ToString(); comboBox.SelectedValuePath = ds.tables["defaulttable"].Columns[1].ToString(); } return true; } catch (Exception expmsg) { return false; } finally { sqladp.dispose(); sqlcmd.dispose(); } }
感谢pratap k。 总结
以上是内存溢出为你收集整理的将SQL数据库附加到ComboBox.ItemSource(WPF)全部内容,希望文章能够帮你解决将SQL数据库附加到ComboBox.ItemSource(WPF)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)