如何将数据库字段名及其值添加到列表框中,并在C#中留有空格?
预先:在Windows窗体中创建项目。 在C#中,我试图创建一个应用程序,在列表框中列出一些数据库值,但我正在寻找一种更好的方法,将两个数据库值(字段名及其值)添加到列表框中,并在它们之间留有间距。我将在下面进一步解释 我在Lisbox中显示的值来自Access数据库,并且是a。特定数据库表和b的字段名。这些字段的值。 列表框如下所示: 列表框左侧的名称是数据库表的字段名。这些将在加载列表框时插入到列表框中。正确的值是(使用读取器)从数据库中获取的那些字段的匹配值 下面是列出这些值和字段名的代码:如何将数据库字段名及其值添加到列表框中,并在C#中留有空格?,c#,ms-access,listbox,C#,Ms Access,Listbox,预先:在Windows窗体中创建项目。 在C#中,我试图创建一个应用程序,在列表框中列出一些数据库值,但我正在寻找一种更好的方法,将两个数据库值(字段名及其值)添加到列表框中,并在它们之间留有间距。我将在下面进一步解释 我在Lisbox中显示的值来自Access数据库,并且是a。特定数据库表和b的字段名。这些字段的值。 列表框如下所示: 列表框左侧的名称是数据库表的字段名。这些将在加载列表框时插入到列表框中。正确的值是(使用读取器)从数据库中获取的那些字段的匹配值 下面是列出这些值和字段名的代
while (reader2.Read())
{
listBox2.Items.Add("Boodschappen:" + "€ ".PadLeft(32) + reader2["Boodschappen"].ToString());
listBox2.Items.Add("Woonverzekering:" + "€ ".PadLeft(28) + reader2["Woonkosten"].ToString());
listBox2.Items.Add("Essent:" + "€ ".PadLeft(46) + reader2["Essent"].ToString());
listBox2.Items.Add("Ziggo:" + "€ ".PadLeft(48) + reader2["Ziggo"].ToString());
listBox2.Items.Add("Huur:" + "€ ".PadLeft(49) + reader2["Huur"].ToString());
listBox2.Items.Add("Zorgverzekering Wendy:" + "€ ".PadLeft(18) + reader2["Zorgverzekering Wendy"].ToString());
listBox2.Items.Add("Zorgverzekering Nicolas:" + "€ ".PadLeft(17) + reader2["Zorgverzekering Nicolas"].ToString());
listBox2.Items.Add("Autoverzekering:" + "€ ".PadLeft(31) + reader2["Autoverzekering"].ToString());
listBox2.Items.Add("Benzine:" + "€ ".PadLeft(44) + reader2["Benzine"].ToString());
}
正如您在代码中所看到的,当从数据库检索字段名值时,数据库字段名被手动添加到列表框(“字段名”)。我还手动添加了间距(PadLeft)以正确勾勒出值,并添加了欧元符号
到目前为止还不错
然而,问题在于:用户还应该能够使用C#code手动向数据库表中添加一个新字段名(参见图片中的Voeg veld toe=add字段),但是当有人手动添加一个新字段时,该字段名不能像其他字段一样自动添加到列表框中(默认)因为我事先不知道要添加哪些字段名,需要多少间距,等等
我曾考虑在每只水獭旁边设置两个列表框,这样我可以更好地控制间距、命名等,但这看起来不太新奇(我喜欢在列表框中选择整行的方式)
因此,问题是:我如何/应该修改代码,以便更容易将自定义数据库字段名添加到我的列表框中,并具有良好的大纲(间距)?甚至可以用读取器读出数据库字段名及其值吗
提前谢谢 我假设字段名称和值存在于Access DB的同一个表中。如果这是真的,那么您所要做的就是更改获取值的select查询,以获取相应的名称。例如:
private void UpdateListBox()
{
List<string> myList=new List<string();
listBox2.DataSource=null; //Clear existing binding;
string query="Select FieldName,FieldValue from Mytable";
int x=100; //Max padding
using(OleDbCommand cmd = new OleDbCommand(query, Myconn))
{
conn.Open();
OleDbDataReader reader = cmd.ExecuteReader();
while (readerr.Read())
{
myList.Add(reader[0].ToString()+":" + "€"PadLeft(x-reader[0].ToString().Length) + reader[1].ToString());
}
}
listBox2.Datasource=myList;
}
非常感谢。必须进行一些修改,但效果很好!
string query="Select FieldName.tableA,FieldValue.tableB from tableA join tableB on tableA.CommonField=tableB.CommonField";