当AccessDataSource没有行时,将按钮设置为禁用

时间:2009-07-25 12:07:58

标签: c# asp.net sqldatasource

我正在使用绑定到DetailsView控件的AccessDataSource控件。如果select没有返回任何行(DetailsView消失,但仍然设置为可见),那么我想通过禁用按钮来禁用其他一些功能。

在后面的C#代码中,我知道我需要:

ButtonMyButton.enabled = false;

但是,我不确定从AccessDataSource或DetailsView获取信息的方法,它会让我知道何时设置值。

我看过其他一些文章,提出了类似项目的例子:

        DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
        int reorderedProducts = (int)dv.Table.Rows[0][0]

对我来说,DataView错误的是没有正确的命名空间,尽管有:

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

如何禁用该按钮?

(虽然这是一个真正的新手问题,但这不是学校的家庭作业,因为这似乎是对这么多简单问题的第一次评论。)

1 个答案:

答案 0 :(得分:2)

AccessDataSource继承自SqlDataSource类。因此,它提供了一个名为Selected的事件,它是SELECT操作完成后引发的事件。此事件应具有类型为SqlDataSourceEventArgs的EventArgs参数。)

此EventArgs参数有一个名为AffectedRows的属性,它将告诉您检索的行数。如果为0,则可以设置Button的enabled属性。

private void OnSelectedHandler(Object source, SqlDataSourceStatusEventArgs e) 
{
  if (e.AffectedRows == 0)
    //Disable the button.
}

对于记录,DataView类位于System.Data命名空间中。此外,在AccessDataSource上调用Select()意味着您正在运行两个select语句,一个用于检索记录(如果有),另一个用于计算检索到的记录数。