2013-04-16 123 views
0

所以我一直在使用sqldatasource與多個控制參數在asp.net中進行搜索。如果一個控件被填充了,但是另一個不是(如果我留下一個空白,它不會帶來任何東西),這讓我有點想要讓我的桌子被搜索到。我現在唯一的問題是,一旦頁面打開,它將填充整個數據庫的gridview。也許我對這一切都是錯誤的,但我的最終目的是要有一個包含8個文本框的搜索頁面來搜索數據庫。任何幫助將不勝感激。不知道這是否是您需要的所有信息,但請告訴我。先進的感謝,所有。希望gridview只填寫按鈕單擊

<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> 

回答

1

您可以通過點擊Selecting事件來控制何時加載sqldatasource,並在不搜索時取消。你可以使用此代碼(從here拍攝)阻止它:

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

建立搜索參數後,然後調用數據綁定的網格。

+0

謝謝,那正是我想要的! – Control

0

以填補需求GridView(上按一下按鈕),設置的DataSourceID的代碼,而不是ASPX頁面上或結合上按一下按鈕,而不是頁面加載。