[ASP.NET] Modiifer le select d'un DataSource / GridView

Modiifer le select d'un DataSource / GridView [ASP.NET] - ASP - Programmation

Marsh Posté le 01-02-2009 à 15:08:54    

Bonjour,
 
En ASP.NET 3.5, sous VS 2008, j'ajoute un datasource de type Access (AccessDataSource), je mets une commande SELECT avec 9 champs dont la clé, une commande UPDATE avec 8 champs et la clé en WHERE. L'update fonctionne parfaitement.
 
Je veux ajouter une sous-requête pour afficher le nom d'un Tiers plutôt que son ID, et l'UPDATE ne marche plus. Il ne plante pas, mais il ne met rien à jour. C'est comme si le fait d'ajouter un champ mettait le bazard. J'ai cru comprendre qu'ASP génère les paramètres en @+nom de champ tout seul. Peut être qu'ajouter un champ dans le Select le perturbe ?  
 
Ci dessous les 2 codes, celui qui marche, celui qui ne marche pas :
 
Celui qui marche :

Code :
  1. <%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Importer.aspx.vb"
  2. Inherits="Importer" title="Page sans titre" %>
  3. <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
  4. </asp:Content>
  5. <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
  6.     <asp:Label ID="Label1" runat="server">Fichier à importer : </asp:Label>
  7.     <asp:FileUpload ID="FileUpload1" runat="server" Height="20px"
  8.     Width="579px" />
  9.     <br />
  10.     <asp:Button ID="btnImporter" runat="server" Text="Importer" Height="22px" />
  11.     <br />
  12.     <br />
  13.     <asp:AccessDataSource ID="dataFacOperationsImport" runat="server"
  14.         DataFile="~/App_Data/Import.mdb"
  15.         SelectCommand=" SELECT
  16.                             operation_id,
  17.                             jour_banque,
  18.                             libelle_banque,
  19.                             montant,
  20.                             jour_operation,
  21.                             numero,
  22.                             note,
  23.                             categorie_id,
  24.                             tiers_id
  25.                         FROM fac_operations_import
  26.                         WHERE telechargement_id=1"
  27.         UpdateCommand=" UPDATE fac_operations_import
  28.                         SET jour_banque=@jour_banque,
  29.                             libelle_banque = @libelle_banque ,
  30.                             montant = @montant,
  31.                             jour_operation = @jour_operation,
  32.                             numero = @numero,
  33.                             [note] = @note,
  34.                             categorie_id = @categorie_id,
  35.                             tiers_id = @tiers_id
  36.                         WHERE operation_id = @operation_id">
  37.     </asp:AccessDataSource>
  38.     <asp:GridView ID="GridView1" runat="server" AllowSorting="True"
  39.         DataSourceID="dataFacOperationsImport" DataKeyNames="operation_id"
  40.         AutoGenerateColumns="False">
  41.         <Columns>
  42.             <asp:CommandField ShowEditButton="True" />
  43.             <asp:BoundField DataField="operation_id" HeaderText="operation_id"
  44.                 InsertVisible="False" ReadOnly="True" SortExpression="operation_id" />
  45.             <asp:BoundField DataField="jour_banque" HeaderText="jour_banque"
  46.                 SortExpression="jour_banque" />
  47.             <asp:BoundField DataField="libelle_banque" HeaderText="libelle_banque"
  48.                 SortExpression="libelle_banque" />
  49.             <asp:BoundField DataField="montant" HeaderText="montant"
  50.                 SortExpression="montant" />
  51.             <asp:BoundField DataField="jour_operation" HeaderText="jour_operation"
  52.                 SortExpression="jour_operation" />
  53.             <asp:BoundField DataField="numero" HeaderText="numero"
  54.                 SortExpression="numero" />
  55.             <asp:BoundField DataField="note" HeaderText="note" SortExpression="note" />
  56.             <asp:BoundField DataField="categorie_id" HeaderText="categorie_id"
  57.                 SortExpression="categorie_id" />
  58.             <asp:BoundField DataField="tiers_id" HeaderText="tiers_id"
  59.                 SortExpression="tiers_id" />
  60.         </Columns>
  61.     </asp:GridView>
  62. </asp:Content>


 
 
Celui qui ne marche pas (différence en rouge):

Code :
  1. <%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Importer.aspx.vb"
  2. Inherits="Importer" title="Page sans titre" %>
  3. <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
  4. </asp:Content>
  5. <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
  6.     <asp:Label ID="Label1" runat="server">Fichier à importer : </asp:Label>
  7.     <asp:FileUpload ID="FileUpload1" runat="server" Height="20px"
  8.     Width="579px" />
  9.     <br />
  10.     <asp:Button ID="btnImporter" runat="server" Text="Importer" Height="22px" />
  11.     <br />
  12.     <br />
  13.     <asp:AccessDataSource ID="dataFacOperationsImport" runat="server"
  14.         DataFile="~/App_Data/Import.mdb"
  15.         SelectCommand=" SELECT
  16.                             operation_id,
  17.                             jour_banque,
  18.                             libelle_banque,
  19.                             montant,
  20.                             jour_operation,
  21.                             numero,
  22.                             note,
  23.                             categorie_id,
  24.                             tiers_id,
  25.                             (select nom_tiers from dim_tiers where  dim_tiers.tiers_id = fac_operations_import.tiers_id) AS Tiers
  26.                         FROM fac_operations_import
  27.                         WHERE telechargement_id=1"
  28.         UpdateCommand=" UPDATE fac_operations_import
  29.                         SET jour_banque=@jour_banque,
  30.                             libelle_banque = @libelle_banque ,
  31.                             montant = @montant,
  32.                             jour_operation = @jour_operation,
  33.                             numero = @numero,
  34.                             [note] = @note,
  35.                             categorie_id = @categorie_id,
  36.                             tiers_id = @tiers_id
  37.                         WHERE operation_id = @operation_id">
  38.     </asp:AccessDataSource>
  39.     <asp:GridView ID="GridView1" runat="server" AllowSorting="True"
  40.         DataSourceID="dataFacOperationsImport" DataKeyNames="operation_id"
  41.         AutoGenerateColumns="False">
  42.         <Columns>
  43.             <asp:CommandField ShowEditButton="True" />
  44.             <asp:BoundField DataField="operation_id" HeaderText="operation_id"
  45.                 InsertVisible="False" ReadOnly="True" SortExpression="operation_id" />
  46.             <asp:BoundField DataField="jour_banque" HeaderText="jour_banque"
  47.                 SortExpression="jour_banque" />
  48.             <asp:BoundField DataField="libelle_banque" HeaderText="libelle_banque"
  49.                 SortExpression="libelle_banque" />
  50.             <asp:BoundField DataField="montant" HeaderText="montant"
  51.                 SortExpression="montant" />
  52.             <asp:BoundField DataField="jour_operation" HeaderText="jour_operation"
  53.                 SortExpression="jour_operation" />
  54.             <asp:BoundField DataField="numero" HeaderText="numero"
  55.                 SortExpression="numero" />
  56.             <asp:BoundField DataField="note" HeaderText="note" SortExpression="note" />
  57.             <asp:BoundField DataField="categorie_id" HeaderText="categorie_id"
  58.                 SortExpression="categorie_id" />
  59.             <asp:BoundField DataField="tiers_id" HeaderText="tiers_id"
  60.                 SortExpression="tiers_id" />
  61.              <asp:BoundField DataField="Tiers" HeaderText="Tiers"  SortExpression="Tiers" />
  62.         </Columns>
  63.     </asp:GridView>
  64. </asp:Content>


 
Merci de votre aide
 
Matz


Message édité par matz le 01-02-2009 à 15:15:21
Reply

Marsh Posté le 01-02-2009 à 15:08:54   

Reply

Marsh Posté le 01-02-2009 à 20:03:18    

Bon j'ai ma propre réponse :)  
 
Il faut spécifier dans le GridView que le champ supplémentaire est en ReadOnly. Ca doit forcer l'update comme si ce paramètre n'existait pas. Donc ajouter  
 

Code :
  1. ReadOnly="True"


 
après SortExpression="Tiers" dans le cas ci dessus

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed