将文本值分配给.net中数据库的按钮?
问题描述:
我有30个按钮,没有默认的文本值。我想要做的是从数据库中获取有序的数据:将文本值分配给.net中数据库的按钮?
这里是数据库格式:
ID value cat
1 Button name a
2 Another name a
3 something a
. . a
. . a
. . a
30 Last button a
1 Button name b
2 Another name b
3 something b
. . b
. . b
. . b
18 Last button b
我现在已经创建了一个函数抢ID和类别使用OLEDB为MS选择特定的名称ACCESS数据库。
这里是一个函数:
private string getItem(int i, string a) {
//database connection
// database query and table slection where ID = i and cat = a
read the data in the selected column
return the string form of the column
}
现在,每当一种形式的负荷,我已经指派以下功能:
button1.Show();
...
...
button30.Show();
button1.Text = getItem(1, a);
button2.Text = getItem(2, a);
..
...
...
button30.text = getItem(30, a);
再有一个单独的按钮来改变,这将改变类别
button1.Text = getItem(1, b);
button2.Text = getItem(2, b);
.
.
.
button18.Text = getItem(18, b);
// because I have only 18 items I hide all the remaining buttons.
button19.Hide();
...
button30.Hide();
它运作良好和轻松,但问题是,它:在按钮上的文字值太慢了。 每当表单加载时,需要一段时间才能将所有数据填充到按钮,而且当我单击按钮更改类别时,也会发生这种情况。
有什么方法在阵列或类似的东西要做到这一点? 上面的代码需要多次访问数据库导致处理速度缓慢。
的另一个问题是,如果我有仅18或数据库中的表格更小的30余项,预制造的按钮将与在它的默认值是可见的。
在上面的代码我克服它利用buttonx.Hide(),而x是不具有任何值的所有值..
这些都是手工工作和所需的质量作弄。
我会感激知道解决这个问题的一些好方法。
答
有很多乱七八糟的代码中有这样做这些事情:
首先不要有所有可用的butttons所有的时间(这将解决具有默认的文本流浪按钮的问题)。而是从您的代码(
Form.Controls.Add()
)生成并添加它们。而不是做多次往返的。在你的代码中有一个DataTable来保存表的缓存,而不是获取这个DataTable。 (如果数据过于易变,那么这可能无法使用,而不是一次查询整个表的每个项目查询)
您可以使用LINQ来查询DataTable以减少代码大小。(并使其更易于维护)
答
杰夫中号所指出的,你需要做的第一件事就是加载使用单个查询的所有记录。
然后,创建按钮,同时通过记录迭代。
不是有30个人访问数据库,以填补30个按钮,不能你刚才有一个很大的访问和填写数据的按钮。我认为这应该会给你带来很大的提振。 – 2011-02-09 07:14:13