Хотите, чтобы gridview заполнял только при нажатии кнопки

Поэтому я работал над поиском в asp.net, используя sqldatasource с более чем одним параметром управления. Мне потребовалось немного времени, чтобы найти в моей таблице возможность поиска, если один элемент управления заполнен, а другой нет (если я оставлю один пустой, ничего не появится). Единственная проблема, с которой я столкнулся сейчас, заключается в том, что при открытии страницы он заполняет сетку просмотра всей базой данных. Может быть, я ошибаюсь, но мое конечное намерение - создать поисковую страницу с 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>

2 ответа

Решение

Вы можете контролировать время загрузки sqldatasource, нажав на событие Selecting и отменив его, если не выполнять поиск. Вы можете заблокировать его с помощью этого кода (взято отсюда):

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    if (!IsPostBack)
        e.Cancel = true;
}

Затем вызовите databind в сетке после того, как параметры поиска будут установлены.

Заполнить GridView по запросу (при нажатии кнопки), установите DataSourceID в коде вместо ASPX страницу или привязать его по нажатию кнопки вместо загрузки страницы.

Другие вопросы по тегам