SQLDataSource FilterExpression不显示默认结果

时间:2017-07-14 16:58:26

标签: c# sql asp.net gridview sqldatasource

我的FilterExpression设置中有SQLDataSource,因此我可以在文本框中输入查询,相关信息会显示在GridView中。在这种程度上,我的代码正在运作。

我遇到的问题是在搜索之前不会显示任何信息。换句话说,当首次启动页面时,除搜索功能外,它是空白的。我希望页面首先显示所有内容,然后在搜索后进行过滤。

在我看来,我的代码与我在互联网上找到的代码相同,但是 出于某种神秘的原因,它并没有为我显示。

这是我现在的代码:

<asp:SqlDataSource ID="ABC" runat="server" DataSourceMode="DataSet" EnableCaching="true" ConnectionString="<%$ ConnectionStrings:ABCConnectionString %>"
SelectCommand="SELECT * FROM [myDatabase]"
UpdateCommand="UPDATE [myDatabase] SET [xData] = @xData, [yData] = @yData, [zData] = @zData WHERE [myID] = @myID" 
DeleteCommand="DELETE FROM [myDatabase] WHERE [myID] = @myId" 
InsertCommand="INSERT INTO [myDatabase] ([xData], [yData], [zData]) VALUES (@xData, @yData, @zData)" 
FilterExpression="xData LIKE '{0}%' "> 
<FilterParameters>
    <asp:ControlParameter Name="xData" ControlID="searchRecord" PropertyName="Text" DefaultValue="%"/>
</FilterParameters>

然后在我的GridView上方,我有TextBoxButton

<asp:Button ID="searchButton" runat="server" Text="Search" />
<asp:TextBox ID="searchRecord" runat="server" Text="Search by store number"></asp:TextBox>

1 个答案:

答案 0 :(得分:0)

我已经通过将过滤器放在按钮onclick中并分别对验证控件进行分组来解决了这个问题。不知何故,验证控制 交叉射击,这阻止了显示。

我将ControlToValidate="xyz"添加到对应于一组控件的所有CompareValidators(在我的例子中,是用于插入新行的控件)。这样做可以将插入控件与我的其他一些控件分开,并且在此之后一切正常。