如何在gridview中更改按钮的状态

时间:2011-04-21 10:50:50

标签: asp.net sql-server

我正在一个工作门户网站上,用户可以在其中输入多个配置文件。

我在gridview中显示所有配置文件。我现在的要求是 应该有一个状态链接与他的所有配置文件(它在位)。

示例: 这是我的gridview:

jobseekerid | Profileid | status

     1           2        Active
     1           3        DeActive
     1           4        DeActive
            ....
            ....

从这一切中,只有一个配置文件可以处于活动状态。 因此,当用户点击任何非活动的配置文件时,它将变为活动状态,然后全部 剩余的个人资料将变为无效 条件是一次只能有一个配置文件处于活动状态。 (当他使一个配置文件处于活动状态时,其余配置文件将自动变为非活动状态。)

现在的问题是,当用户在网格视图中激活配置文件时,我无法使所有剩余的配置文件处于非活动状态。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

这是一个常见问题,通常通过保留填充gridview的原始数据集来解决。因此,在您的情况下,您应该在视图状态中存储数据集(或配置文件列表 - 您用于填充网格视图的任何数据集)(假设它不是太大,否则页面将加载缓慢)。然后,当您填充gridview时,您需要为每个click事件分配一个配置文件ID,以便您知道哪一个被点击了。然后,您需要遍历在视图状态中保存的数据集,并将所有这些数据集(刚刚单击的数据集)更新为非活动状态。循环不像它听起来那么笨拙......在sql server 2005和2008中,你有一个名为'table'的新数据类型,所以你可以将所有其他的profileIDs一举传递给DB,将它们全部更新为非活动状态。

答案 1 :(得分:0)

更新后,循环遍历Gridview的表行并相应地更改值,如果这足以更新后端中的记录。如果存在与之关联的值,则可以将该值保存在隐藏字段中,并更改隐藏字段中的值。

如果这些更改即将发生(即您在更改时更新数据库),您可以将隐藏字段设置为回发触发器,并在您单击任何正在保存的按钮时将其设置为eval()更新状态的更新记录。这将导致RowCommand触发,您可以在其中遍历每个记录并相应地更新。