首次点击搜索无效

时间:2017-04-10 14:53:01

标签: asp.net c#-4.0 webforms reportviewer

我使用ReportViewer来显示数据。我不想在Page_Load中加载数据(由于我有大量数据,因此加载页面需要花费大量时间)。 当我点击搜索按钮时,我有一个问题,它在第一次点击时加载所有数据,在第二次点击后它会过滤数据。 知道如何在第一次点击过滤数据 我的代码看起来像这样:

  • C#:

    protected void LinkButton_FilterArticles_Click(object sender, EventArgs e)
    {
        try
        {                                           
            ReportViewer_DetailsArticles.LocalReport.Refresh();
            ReportViewer_DetailsArticles.ShowReportBody = true;
        }
        catch (Exception ex)
        {
            ...
        }
    }
    
  • asp.net网络表单:

    <rsweb:ReportViewer ID="ReportViewer_DetailsArticles" runat="server">
      <LocalReport ReportPath="BO\Report\Report_DetailsArticles.rdlc">
        <DataSources>
          <rsweb:ReportDataSource Name="DataSet_DetailsArticles" DataSourceId="ObjectDataSource_DetailsArticles"></rsweb:ReportDataSource>
        </DataSources>
      </LocalReport>
    </rsweb:ReportViewer>
    <asp:ObjectDataSource runat="server" ID="ObjectDataSource_DetailsArticles" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="MICIEN.BO.DataSet.DataSet_DetailsArticlesTableAdapters.Reporting_SearchFromDetailsArticlesTableAdapter" UpdateMethod="GetData">
       <SelectParameters>
         <asp:ControlParameter ControlID="TextBox_DateDecisionFrom" PropertyName="Text" Name="DateDecisionFrom" Type="DateTime"></asp:ControlParameter>
         <asp:ControlParameter ControlID="TextBox_DateDecisionTo" PropertyName="Text" Name="DateDecisionTo" Type="DateTime"></asp:ControlParameter>
         <asp:ControlParameter ControlID="TextBox_DateReceptionFrom" PropertyName="Text" Name="DateReceptionDemandeFrom" Type="DateTime"></asp:ControlParameter>
         <asp:ControlParameter ControlID="TextBox_DateReceptionTo" PropertyName="Text" Name="DateReceptionDemandeTo" Type="DateTime"></asp:ControlParameter>
         <asp:ControlParameter ControlID="TextBox_CodeSH" PropertyName="Text" Name="ArticleCodeExt" Type="String"></asp:ControlParameter>
         <asp:ControlParameter ControlID="TextBox_Importateur" PropertyName="Text" Name="Importer" Type="String"></asp:ControlParameter>
         <asp:ControlParameter ControlID="DropDownList_Laboratoire" PropertyName="SelectedValue" Name="Laboratoire" Type="Int32"></asp:ControlParameter>
         <asp:ControlParameter ControlID="DropDownList_Bureau" PropertyName="SelectedValue" Name="Bureau" Type="Int32"></asp:ControlParameter>
         <asp:ControlParameter ControlID="DropDownList_FamilleProduit" PropertyName="SelectedValue" Name="FamilleProduit" Type="Int32"></asp:ControlParameter> </SelectParameters> </asp:ObjectDataSource>
    
抱歉我的英文不好

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我在storedProcedure中添加了一个参数&#39; @Show bit&#39;以及我设定的声明#39; @Show = 1&#39; 然后我在页面aspx中添加了一个隐藏字段:

 <asp:HiddenField ID="HiddenField_Show" runat="server" />

数据源参数:

<asp:ControlParameter ControlID="HiddenField_Show" PropertyName="Value" Name="Show" Type="Boolean" DefaultValue="False"></asp:ControlParameter>

我的新c#代码看起来像这样:

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            {
                HiddenField_Show.Value = "False";
                ReportViewer_DetailsArticles.LocalReport.Refresh();
                ReportViewer_DetailsArticles.ShowReportBody = true;
            }
            else HiddenField_Show.Value = "True";
        }
        catch (Exception ex)
        {
            ...
        }
    }

    protected void LinkButton_FilterArticles_Click(object sender, EventArgs e)
    {
        try
        {                
            HiddenField_Show.Value = "True";
            ReportViewer_DetailsArticles.LocalReport.Refresh();
            ReportViewer_DetailsArticles.ShowReportBody = true;
        }
        catch (Exception ex)
        {
            ...
        }
    }