C# 希望gridview仅在单击按钮时填充

C# 希望gridview仅在单击按钮时填充,c#,asp.net,sql,sqldatasource,C#,Asp.net,Sql,Sqldatasource,因此,我一直在asp.net中使用带有多个控制参数的sqldatasource进行搜索。如果一个控件已填充,而另一个控件未填充(如果我将其中一个控件留空,它将不会显示任何内容),那么我需要花一些时间才能使我的表可搜索。我现在唯一的问题是,一旦页面打开,它就会用整个数据库填充gridview。也许我完全错了,但我的最终目的是拥有一个包含8个文本框的搜索页面来搜索数据库。任何帮助都将不胜感激。不确定这是否是您需要的全部信息,但请告诉我。谢谢大家 <asp:SqlDataSource ID="S

因此,我一直在asp.net中使用带有多个控制参数的sqldatasource进行搜索。如果一个控件已填充,而另一个控件未填充(如果我将其中一个控件留空,它将不会显示任何内容),那么我需要花一些时间才能使我的表可搜索。我现在唯一的问题是,一旦页面打开,它就会用整个数据库填充gridview。也许我完全错了,但我的最终目的是拥有一个包含8个文本框的搜索页面来搜索数据库。任何帮助都将不胜感激。不确定这是否是您需要的全部信息,但请告诉我。谢谢大家

<asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:Conn %>" CancelSelectOnNullParameter="false"
    SelectCommand="SELECT [ID], [ContractNo], [OMBEmp], [Cono], [ReviewDate], [AmendNo], [RType], [Contractor], [Purpose], [Department] FROM [tblContractLog] WHERE (([ContractNo] = @ContractNo OR @ContractNo = '') AND ([OMBEmp] = @OMBEmp OR @OMBEmp = '') AND ([Cono] = @Cono OR @Cono = '') AND ([AmendNo] = @AmendNo OR @AmendNo = '') AND ([RType] = @RType OR @RType = '') AND ([Contractor] = @Contractor OR @Contractor = '') AND ([Purpose] = @Purpose OR @Purpose = '') AND ([Department] = @Department OR @Department = ''))">
        <SelectParameters>
            <asp:ControlParameter ControlID="contractnumb" Name="ContractNo" 
                PropertyName="Text" Type="String" ConvertEmptyStringToNull="false"/>
            <asp:ControlParameter ControlID="employeetext" Name="OMBEmp" 
                PropertyName="Text" Type="String" ConvertEmptyStringToNull="false"/>
            <asp:ControlParameter ControlID="conumb" Name="Cono" 
                PropertyName="Text" Type="String" ConvertEmptyStringToNull="false"/>
                <asp:ControlParameter ControlID="amendnumbtxt" Name="AmendNo" 
                PropertyName="Text" Type="String" ConvertEmptyStringToNull="false"/>
            <asp:ControlParameter ControlID="rtypetxt" Name="RType" 
                PropertyName="Text" Type="String" ConvertEmptyStringToNull="false"/>
            <asp:ControlParameter ControlID="contractortxt" Name="Contractor" 
                PropertyName="Text" Type="String" ConvertEmptyStringToNull="false"/>
            <asp:ControlParameter ControlID="purposetxt" Name="Purpose" 
                PropertyName="Text" Type="String" ConvertEmptyStringToNull="false"/>
            <asp:ControlParameter ControlID="departmenttxt" Name="Department" 
                PropertyName="Text" Type="String" ConvertEmptyStringToNull="false"/>
        </SelectParameters>
    </asp:SqlDataSource>


要按需填写
GridView
(按按钮单击),请在代码中而不是在
ASPX
页面上设置数据源ID,或者在按钮单击而不是页面加载时绑定数据源。

您可以通过点击事件控制sqldatasource何时加载,不搜索时取消。您可以使用以下代码阻止它(取自):


然后在搜索参数确定后在网格上调用databind。

谢谢,这正是我想要的!
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    if (!IsPostBack)
        e.Cancel = true;
}