Asp.net 仅在单击按钮时填充gridview

Asp.net 仅在单击按钮时填充gridview,asp.net,vb.net,gridview,Asp.net,Vb.net,Gridview,我的页面由4个文本框(查询过滤器)、一个提交按钮和一个gridview组成。gridview数据源配置为从4个文本框中提取文本并过滤查询结果。这部分很好用 这个问题的原因是,为了让查询正常工作,我不能有空文本框,否则查询将无法正常工作。必须输入某些内容,或%表示通配符 为了方便我的用户,我尝试为gridview数据源配置中的4个控制源(文本框)中的每一个设置一个默认值%。但是,由于gridview会在页面加载时自动填充,这不起作用,因为所有4个控件都设置为通配符。当你有一个有几十万行的数据库 T

我的页面由4个文本框(查询过滤器)、一个提交按钮和一个gridview组成。gridview数据源配置为从4个文本框中提取文本并过滤查询结果。这部分很好用

这个问题的原因是,为了让查询正常工作,我不能有空文本框,否则查询将无法正常工作。必须输入某些内容,或%表示通配符

为了方便我的用户,我尝试为gridview数据源配置中的4个控制源(文本框)中的每一个设置一个默认值%。但是,由于gridview会在页面加载时自动填充,这不起作用,因为所有4个控件都设置为通配符。当你有一个有几十万行的数据库

TL/DR:我希望我的gridview只在单击按钮时填充,我希望空白文本框被接受为通配符(%)。我尝试了两种不同的关于iPostBack的代码剪贴,但他们似乎什么都没做。语言=VB。你们这些好人能提供的任何建议都将不胜感激。asp如下:

  <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TaxRollConnectionString %>" SelectCommand="SELECT [OWNER], [ADDRESS1], [ADDRESS2], [ADDRESS3], [CITY], [STATE], [ZIP], [WELL], [YEARBEGAN], [OPERATOR], [SURVEY], [ACRES], [TYPE], [INTEREST], [VALUE], [YEAR], [COUNTY] FROM [Owner] WHERE (([OWNER] LIKE '%' + @OWNER + '%') AND ([WELL] LIKE '%' + @WELL + '%') AND ([OPERATOR] LIKE '%' + @OPERATOR + '%') AND ([COUNTY] LIKE '%' + @COUNTY + '%'))">
        <SelectParameters>
            <asp:ControlParameter ControlID="textOwner" Name="OWNER" PropertyName="Text" Type="String" />
            <asp:ControlParameter ControlID="textWell" Name="WELL" PropertyName="Text" Type="String" />
            <asp:ControlParameter ControlID="textOp" Name="OPERATOR" PropertyName="Text" Type="String" />
            <asp:ControlParameter ControlID="textCo" Name="COUNTY" PropertyName="Text" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:BoundField DataField="OWNER" HeaderText="OWNER" SortExpression="OWNER" />
            <asp:BoundField DataField="ADDRESS1" HeaderText="ADDRESS1" SortExpression="ADDRESS1" />
            <asp:BoundField DataField="ADDRESS2" HeaderText="ADDRESS2" SortExpression="ADDRESS2" />
            <asp:BoundField DataField="ADDRESS3" HeaderText="ADDRESS3" SortExpression="ADDRESS3" />
            <asp:BoundField DataField="CITY" HeaderText="CITY" SortExpression="CITY" />
            <asp:BoundField DataField="STATE" HeaderText="STATE" SortExpression="STATE" />
            <asp:BoundField DataField="ZIP" HeaderText="ZIP" SortExpression="ZIP" />
            <asp:BoundField DataField="WELL" HeaderText="WELL" SortExpression="WELL" />
            <asp:BoundField DataField="YEARBEGAN" HeaderText="YEARBEGAN" SortExpression="YEARBEGAN" />
            <asp:BoundField DataField="OPERATOR" HeaderText="OPERATOR" SortExpression="OPERATOR" />
            <asp:BoundField DataField="SURVEY" HeaderText="SURVEY" SortExpression="SURVEY" />
            <asp:BoundField DataField="ACRES" HeaderText="ACRES" SortExpression="ACRES" />
            <asp:BoundField DataField="TYPE" HeaderText="TYPE" SortExpression="TYPE" />
            <asp:BoundField DataField="INTEREST" HeaderText="INTEREST" SortExpression="INTEREST" />
            <asp:BoundField DataField="VALUE" HeaderText="VALUE" SortExpression="VALUE" />
            <asp:BoundField DataField="YEAR" HeaderText="YEAR" SortExpression="YEAR" />
            <asp:BoundField DataField="COUNTY" HeaderText="COUNTY" SortExpression="COUNTY" />
        </Columns>
末级


编辑

我通过从gridview中删除datasourceID解决了两个主要问题,并在单击时执行了以下操作:

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Call BindData()
End Sub

Private Sub BindData()
    With GridView1
        .DataSource = SqlDataSource1
        .DataBind()
    End With
End Sub

然而,在这样做的过程中,我成功地打破了gridview的表排序功能。我想我会找到一种方法来对客户端进行排序

共享你的代码隐藏文件。那里什么都没有。只需一些代码,即可通过单击按钮清除/重置我的查询字段。我把它添加到主帖子中
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Call BindData()
End Sub

Private Sub BindData()
    With GridView1
        .DataSource = SqlDataSource1
        .DataBind()
    End With
End Sub