Search code examples
asp.netsql-servervisual-studio-2010gridviewsqldatasource

Change Gridview Datasource using ASP .NET SQLDATASOURCE


i have a gridview automaticly connecting with sqldatasource1, etc. For the grid, I also have a search textbox If the user needs to filter the records it calls an another ((sqldatasource2-another procuder)) and put it in the same gridview ..,so i need to change the gridView.datasourceID to the another sqldatasource onclick a button ..

note : sqldatasource1 and sqldatasource2 returning the same queries ,

the procuder of sqldatasource1 :

create proc AfficheDossiers
@Nom_GIAC varchar(50)
as
 begin
 select [ID_Dossier] as 'ID_Dossier'
      ,[ID_Entreprise] as 'ID_Entreprise'
      ,[Date_Depot] as 'Date_Dépôt'
      ,[Type_Etude] as 'Type_Etude'
      ,[Dernier_Type] as 'Dernier_Type'
      ,[Eligibile] as 'Eligibilité'
      ,[Fiche_Information] as 'Fiche_Information'
      ,[Buletin_Adhesion] as 'Bulletin_d’adhésion'
      ,[Fiche_Renseignment] as 'Fiche_Renseignment'
      ,[Attestation] as 'Attestation'
      ,[Date_Debut] as 'Date_Début'
      ,[Date_Fin] as 'Date_Fin'
      ,[ID_Cabinet] as 'ID_Cabinet'
      ,[Montant_Demander] as 'Montant_Demander'
      ,[Duree] as 'Durée'
      ,[Porcentage_Taux] as 'Pourcentage,Taux' from Dossier where Nom_Giac = @Nom_GIAC 
 end

the procuder of sqldatasource2((searche) :

alter proc rechercherGIAC @nomgiac varchar(20),@nom varchar(30),@par varchar(50)
           as
            begin
            if @nom='CNSS' 
              begin
              select d.[ID_Dossier] as 'ID_Dossier'
              ,d.[ID_Entreprise] as 'ID_Entreprise'
              ,[Date_Depot] as 'Date_Dépôt'
              ,[Type_Etude] as 'Type_Etude'
              ,[Dernier_Type] as 'Dernier_Type'
              ,[Eligibile] as 'Eligibilité'
              ,[Fiche_Information] as 'Fiche_Information'
              ,[Buletin_Adhesion] as 'Bulletin_d’adhésion'
              ,[Fiche_Renseignment] as 'Fiche_Renseignment'
              ,[Attestation] as 'Attestation'
              ,[Date_Debut] as 'Date_Début'
              ,[Date_Fin] as 'Date_Fin'
              ,[ID_Cabinet] as 'ID_Cabinet'
              ,[Montant_Demander] as 'Montant_Demander'
              ,[Duree] as 'Durée'
              ,[Porcentage_Taux] as 'Pourcentage,Taux' 
              from dbo.Dossier d inner join entreprise e on d.ID_Entreprise=e.ID_Entreprise
              where CNSS_Entreprise=@par and d.Nom_Giac=@nomgiac 
              end
            else if @nom='RS'  
              begin
              select [ID_Dossier] as 'ID_Dossier'
              ,[ID_Entreprise] as 'ID_Entreprise'
              ,[Date_Depot] as 'Date_Dépôt'
              ,[Type_Etude] as 'Type_Etude'
              ,[Dernier_Type] as 'Dernier_Type'
              ,[Eligibile] as 'Eligibilité'
              ,[Fiche_Information] as 'Fiche_Information'
              ,[Buletin_Adhesion] as 'Bulletin_d’adhésion'
              ,[Fiche_Renseignment] as 'Fiche_Renseignment'
              ,[Attestation] as 'Attestation'
              ,[Date_Debut] as 'Date_Début'
              ,[Date_Fin] as 'Date_Fin'
              ,[ID_Cabinet] as 'ID_Cabinet'
              ,[Montant_Demander] as 'Montant_Demander'
              ,[Duree] as 'Durée'
              ,[Porcentage_Taux] as 'Pourcentage,Taux'  
              from dbo.Dossier 
              where  Nom_Giac=@nomgiac and ID_Entreprise in( select ID_Entreprise
                                                             from dbo.Entreprise
                                                             where Raison_Social=@par)                                            
              end
           else if @nom ='Date'
            begin
             declare @v smalldatetime,@b smalldatetime
              set @b=SUBSTRING(@par,1,4)
              set @v=SUBSTRING(@par,5,8)
            select [ID_Dossier] as 'ID_Dossier'
              ,[ID_Entreprise] as 'ID_Entreprise'
              ,[Date_Depot] as 'Date_Dépôt'
              ,[Type_Etude] as 'Type_Etude'
              ,[Dernier_Type] as 'Dernier_Type'
              ,[Eligibile] as 'Eligibilité'
              ,[Fiche_Information] as 'Fiche_Information'
              ,[Buletin_Adhesion] as 'Bulletin_d’adhésion'
              ,[Fiche_Renseignment] as 'Fiche_Renseignment'
              ,[Attestation] as 'Attestation'
              ,[Date_Debut] as 'Date_Début'
              ,[Date_Fin] as 'Date_Fin'
              ,[ID_Cabinet] as 'ID_Cabinet'
              ,[Montant_Demander] as 'Montant_Demander'
              ,[Duree] as 'Durée'
              ,[Porcentage_Taux] as 'Pourcentage,Taux'  
            from Dossier 
            where Date_Depot between @b and @v and Nom_Giac like @nomgiac

            end 
            end

this is the search text and button :

 Saisir la CNSS : 
                     <asp:TextBox ID="CNSSTxt" class="TXTBOX" runat="server" Height="23px" placeholder="CNSS" style="font-family : Comic Sans MS, Arial, Tahoma; color:Red;"></asp:TextBox>

                     <asp:Button ID="BtnFiltrerCNSS" runat="server" Text="Filtrer" class="BTN" style="font-variant:small-caps;" />

this is the gridview :

 <div class="GridViewDiv">

              <asp:UpdatePanel ID="DossierUpdatePanel" runat="server" UpdateMode="Conditional" >
                  <ContentTemplate>
                      <asp:SqlDataSource ID="Dossier" runat="server" 
                              ConnectionString="<%$ ConnectionStrings:OfficeConnectionString %>" 
                              SelectCommand="AfficheDossiers" SelectCommandType="StoredProcedure">
                                   <SelectParameters>
                                       <asp:SessionParameter Name="Nom_GIAC" SessionField="Nom_GIAC" Type="String" />
                                   </SelectParameters>
                          </asp:SqlDataSource>

                      <asp:SqlDataSource ID="RechercheDossierDS" runat="server" 
                          ConnectionString="<%$ ConnectionStrings:OfficeConnectionString %>" 
                          SelectCommand="rechercherGIAC" SelectCommandType="StoredProcedure">
                          <SelectParameters>
                              <asp:SessionParameter Name="nomgiac" SessionField="Nom_GIAC" Type="String" />
                              <asp:ControlParameter ControlID="RecherhcerComboBox" Name="nom" 
                                  PropertyName="SelectedValue" Type="String" />
                              <asp:SessionParameter Name="par" SessionField="Recherche" Type="String" />
                          </SelectParameters>
                      </asp:SqlDataSource>
                      <asp:GridView ID="DossierGV" runat="server" AllowPaging="True" AllowSorting="True" 
          DataSourceID="Dossier" AutoGenerateColumns="False" DataKeyNames="ID_Dossier">
                          <Columns>
                              <asp:CommandField ShowSelectButton="True" />
                              <asp:BoundField DataField="ID_Dossier" HeaderText="ID_Dossier" ReadOnly="True" 
                                  SortExpression="ID_Dossier" />
                              <asp:BoundField DataField="ID_Entreprise" HeaderText="ID_Entreprise" 
                                  SortExpression="ID_Entreprise" />
                              <asp:BoundField DataField="Date_Dépôt" HeaderText="Date_Dépôt" 
                                  SortExpression="Date_Dépôt" />
                              <asp:BoundField DataField="Type_Etude" HeaderText="Type_Etude" 
                                  SortExpression="Type_Etude" />
                              <asp:BoundField DataField="Dernier_Type" HeaderText="Dernier_Type" 
                                  SortExpression="Dernier_Type" />
                              <asp:BoundField DataField="Eligibilité" HeaderText="Eligibilité" 
                                  SortExpression="Eligibilité" />
                              <asp:BoundField DataField="Fiche_Information" HeaderText="Fiche_Information" 
                                  SortExpression="Fiche_Information" />
                              <asp:BoundField DataField="Bulletin_d’adhésion" HeaderText="Bulletin_d’adhésion" 
                                  SortExpression="Bulletin_d’adhésion" />
                              <asp:BoundField DataField="Fiche_Renseignment" HeaderText="Fiche_Renseignment" 
                                  SortExpression="Fiche_Renseignment" />
                              <asp:BoundField DataField="Attestation" HeaderText="Attestation" 
                                  SortExpression="Attestation" />
                              <asp:BoundField DataField="Date_Début" HeaderText="Date_Début" 
                                  SortExpression="Date_Début" />
                              <asp:BoundField DataField="Date_Fin" HeaderText="Date_Fin" 
                                  SortExpression="Date_Fin" />
                              <asp:BoundField DataField="ID_Cabinet" HeaderText="ID_Cabinet" 
                                  SortExpression="ID_Cabinet" />
                              <asp:BoundField DataField="Montant_Demander" HeaderText="Montant_Demander" 
                                  SortExpression="Montant_Demander" />
                              <asp:BoundField DataField="Durée" HeaderText="Durée" SortExpression="Durée" />
                              <asp:BoundField DataField="Pourcentage,Taux" HeaderText="Pourcentage,Taux" 
                                  SortExpression="Pourcentage,Taux" />
                          </Columns>
                      </asp:GridView>
                  </ContentTemplate>
              </asp:UpdatePanel>
       </div>     

Any clues?

thanks,


Solution

  • In the onclick button event just set

    gridview.datasource = newDataSource;

    Then call the

    girdView.DataBind();

    Let me know if this is what you needed.

    If you are using visual studio 2010, you need to click on your .aspx file and then click design view in the bottom right of the window. This will load a mock up of your screen and you can just double click the button that you want the click event on. It will then redirect you to the code behind (.aspx.cs) file. In that method is where you need to write this.

    I only say this now because I see that your button has no onclick="methodName" property