我正在使用asp:GridView。在这个aspx页面上,我通过在文本框中键入特定值,为用户提供搜索当前gridview的选项。然后,我根据用户输入的内容设置了一个SqlDataSource.FilterExpression。
例如,用户类型" MODEL1"并点击搜索。然后:
SqlDataSource.FilterExpression = "ModelName= " + "'" + TextBox.Text + "'";
接下来我需要做的是检查是否结果?显然,我可以判断它是否在页面上没有,因为没有可见的gridview。但是,我需要一种方法来捕获它,这样我就可以重置FilterExpression并抛出一个"不正确的搜索"用户留言。我没有在FilterExpression下看到任何可以帮助我的方法,而且我已经尝试了GridView.Rows.Count,它似乎无法正常工作。我还有其他选择吗?或者我可以将Rows.Count方法做错了吗?
这是触发搜索事件时发生的一些额外代码:
if (TextBox.Text == string.Empty)
{
errorLabel.Text = "Please enter a value";
}
else
{
SqlDataSource.FilterExpression = "ModelName= " + "'" + TextBox.Text + "'";
if (!GridView.Rows.Count > 0)
{
errorLabel.Text = "Model not found";
SqlDataSource.FilterExpression = "";
}
}
编辑:只是想补充一点,GridView.Rows.Count产生的值为51,即没有FilterExpression就存在多少行。
答案 0 :(得分:1)
将结果放在DataView
,其Count
属性:
SqlDataSource.FilterExpression = "ModelName= " + "'" + TextBox.Text + "'";
System.Data.DataView dv = (DataView)SqlDataSource.Select(DataSourceSelectArguments.Empty);
dv.RowFilter = SqlDataSource.FilterExpression;
int RowCount = dv.Count;
我建议您在FilterExpression上使用String.Format()
。它可以让您避免语法错误:
SqlDataSource.FilterExpression = String.Format("ModelName='{0}'", TextBox.Text);