将文本值分配给.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是不具有任何值的所有值..

这些都是手工工作和所需的质量作弄。

我会感激知道解决这个问题的一些好方法。

+2

不是有30个人访问数据库,以填补30个按钮,不能你刚才有一个很大的访问和填写数据的按钮。我认为这应该会给你带来很大的提振。 – 2011-02-09 07:14:13

有很多乱七八糟的代码中有这样做这些事情:

  • 首先不要有所有可用的butttons所有的时间(这将解决具有默认的文本流浪按钮的问题)。而是从您的代码(Form.Controls.Add())生成并添加它们。

  • 而不是做多次往返的。在你的代码中有一个DataTable来保存表的缓存,而不是获取这个DataTable。 (如果数据过于易变,那么这可能无法使用,而不是一次查询整个表的每个项目查询)

  • 您可以使用LINQ来查询DataTable以减少代码大小。(并使其更易于维护)

杰夫中号所指出的,你需要做的第一件事就是加载使用单个查询的所有记录。

然后,创建按钮,同时通过记录迭代。