none
GridView : efface des colonnes du dataset RRS feed

  • Question

  • Bonjour,

    J'ai une GridView ayant un ObjectDataSource comme datasource

    J'ai remarqué que les colonnes non affichée de ma source de données sont effacée lors de l'update.

    D'ou vient le soucis?

    Merci

     

    François


    FB
    • Déplacé Ciprian Duduiala mercredi 16 novembre 2011 10:55 (Origine :Développement .NET (en général))
    mercredi 16 novembre 2011 07:34

Réponses

  • Finalement, j'ai réussi (j'avoue que je ne comprends pas pourquoi il y avait un problème avant)...

    J'ai placé la colonne à cacher en dernière colonne du GridView pour ne pas avoir de décallage de header.

     <asp:TemplateField  >
                    <EditItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("idTraitement") %>'></asp:Label>
                    </EditItemTemplate>
                    <ItemStyle CssClass="hiddencol" />
    </asp:TemplateField>

     


    FB
    mercredi 16 novembre 2011 11:27

Toutes les réponses

  • Dans le code suivant, si je passe en mode EDIT puis que je valide les modification, la colonne idTraitement passe à 0.

    Pourtant, je l'ai mis en colonne cachée. 

    Voici la source de données :

        <asp:ObjectDataSource ID="Obj" runat="server" SelectMethod="GetLstTraitement" 
            TypeName="CatWebLib.AccesBase" UpdateMethod="UpdateTraitements_Plan" OldValuesParameterFormatString="original_{0}">
            <UpdateParameters>
                <asp:Parameter Name="Maj" Type="String" DefaultValue="U" />
                <asp:Parameter Name="original_idTraitements_Plan" Type="Int32" />
                <asp:Parameter Name="idTraitement" Type="Int32" />
                <asp:Parameter Name="Actif" Type="Boolean" />
                <asp:Parameter Name="Lundi" Type="Boolean" />
                <asp:Parameter Name="Mardi" Type="Boolean" />
                <asp:Parameter Name="Mercredi" Type="Boolean" />
                <asp:Parameter Name="Jeudi" Type="Boolean" />
                <asp:Parameter Name="Vendredi" Type="Boolean" />
                <asp:Parameter Name="Samedi" Type="Boolean" />
                <asp:Parameter Name="Dimanche" Type="Boolean" />
                <asp:Parameter Name="Heure" Type="String" />
                <asp:Parameter Name="Encontinue" Type="Boolean" />
                <asp:Parameter Name="Encours" Type="Boolean" />
                <asp:Parameter Name="DateDebutDernierTraitement" Type="DateTime" />
                <asp:Parameter Name="DateFinDernierTraitement" Type="DateTime" />
                <asp:Parameter Name="ExecutionImmediate" Type="Boolean" />
                <asp:Parameter Name="Erreur" Type="Boolean" />
                <asp:Parameter Name="CompteRendu" Type="String" />
            </UpdateParameters>
            <SelectParameters>
                <asp:Parameter Name="Code" Type="String" />
            </SelectParameters>
        </asp:ObjectDataSource>
    
    

    Et le GridView :

        <asp:GridView ID="Gr" runat="server" AutoGenerateColumns="False"  
            BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" 
            CellPadding="3" DataSourceID="Obj" GridLines="Vertical" DataKeyNames="idTraitements_Plan" >
            <RowStyle BackColor="#EEEEEE" ForeColor="Black" />
            <Columns>
                <asp:BoundField DataField="idTraitements_Plan" HeaderText="idTraitements_Plan" ReadOnly="True" 
                    SortExpression="idTraitements_Plan"  HeaderStyle-CssClass="hiddencol" 
                    itemstyle-cssclass="hiddencol"  footerStyle-CssClass="hiddencol">
                </asp:BoundField>
                <asp:BoundField DataField="idTraitement" HeaderText="idTraitement" ReadOnly="True" 
                    SortExpression="idTraitement"  HeaderStyle-CssClass="hiddencol" 
                    itemstyle-cssclass="hiddencol"  footerStyle-CssClass="hiddencol">
                </asp:BoundField>
    
                <asp:CommandField DeleteText="" InsertText="" InsertVisible="False" NewText="" 
                    SelectText="" ShowEditButton="True" UpdateText="Valider" />
                <asp:BoundField DataField="Code" HeaderText="Code" ReadOnly="True" />
                <asp:BoundField DataField="Nom" ReadOnly="True" />
                <asp:CheckBoxField DataField="Actif" HeaderText="Actif" />
                <asp:TemplateField HeaderText="Lun.">
                    <EditItemTemplate>
                        <asp:CheckBox ID="CheckBox1" runat="server" TextAlign="Left" Text="Lundi" Checked='<%# Bind("Lundi") %>' /> <br />
                        <asp:CheckBox ID="CheckBox2" runat="server" TextAlign="Left" Text="Mardi" Checked='<%# Bind("Mardi") %>' /> <br />
                        <asp:CheckBox ID="CheckBox3" runat="server" TextAlign="Left" Text="Lundi" Checked='<%# Bind("Mercredi") %>' /> <br />
                        <asp:CheckBox ID="CheckBox4" runat="server" TextAlign="Left" Text="Jeudi" Checked='<%# Bind("Jeudi") %>' /> <br />
                        <asp:CheckBox ID="CheckBox5" runat="server" TextAlign="Left" Text="Vendredi" Checked='<%# Bind("Vendredi") %>' /> <br />
                        <asp:CheckBox ID="CheckBox6" runat="server" TextAlign="Left" Text="Samedi" Checked='<%# Bind("Samedi") %>' /> <br />
                        <asp:CheckBox ID="CheckBox7" runat="server" TextAlign="Left" Text="Dimanche" Checked='<%# Bind("Dimanche") %>' /> <br />
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:CheckBox ID="CheckBox15" runat="server" TextAlign="Left" Text="Lundi" Checked='<%# Bind("Lundi") %>'  Enabled="false" /> <br />
                        <asp:CheckBox ID="CheckBox2" runat="server" TextAlign="Left" Text="Mardi" Checked='<%# Bind("Mardi") %>'  Enabled="false" /> <br />
                        <asp:CheckBox ID="CheckBox3" runat="server" TextAlign="Left" Text="Lundi" Checked='<%# Bind("Mercredi") %>'  Enabled="false" /> <br />
                        <asp:CheckBox ID="CheckBox4" runat="server" TextAlign="Left" Text="Jeudi" Checked='<%# Bind("Jeudi") %>'  Enabled="false" /> <br />
                        <asp:CheckBox ID="CheckBox5" runat="server" TextAlign="Left" Text="Vendredi" Checked='<%# Bind("Vendredi") %>'  Enabled="false" /> <br />
                        <asp:CheckBox ID="CheckBox6" runat="server" TextAlign="Left" Text="Samedi" Checked='<%# Bind("Samedi") %>'  Enabled="false" /> <br />
                        <asp:CheckBox ID="CheckBox7" runat="server" TextAlign="Left" Text="Dimanche" Checked='<%# Bind("Dimanche") %>'  Enabled="false" /> <br />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Heure" HeaderText="Heure" />
                <asp:BoundField DataField="DateDebutDernierTraitement" 
                    HeaderText="Date dernier traitement" />
                <asp:BoundField DataField="CompteRendu" />
                <asp:CheckBoxField DataField="Erreur" HeaderText="Erreur" />
                <asp:ButtonField ButtonType="Button" CommandName="Manuel" InsertVisible="False"                Text="Lancement manuel" />
            </Columns>
            <FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
            <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
            <AlternatingRowStyle BackColor="Gainsboro" />
        </asp:GridView>
    
    


    Le code behind :

        Sub LoadData()
            gr.DataBind()
        End Sub
    
        Protected Sub Obj_ObjectCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceEventArgs) Handles Obj.ObjectCreated
            CType(e.ObjectInstance, AccesBase).strCatConn = ConfigurationManager.ConnectionStrings("CatWebConnectionString").ConnectionString
        End Sub
    
        Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
    
            If Not IsPostBack Then
    
                Dim Acc As New AccesBase(ConfigurationManager.ConnectionStrings("CatWebConnectionString").ConnectionString)
                midPage = Acc.GetIdPageASP(Me.AppRelativeVirtualPath)
    
    
                If Not Session("Traduit") Then
                    ' Placer le code pour traduire les control de la page 
                    LabTitre.Text = Acc.GetAS_Libelle("me", "title", CType(Session("idLangueSite"), Int32), CType(Session("idLangueFR"), Int32), LabTitre.Text, midPage, Session("AS_Lib_MAJ"))
                    Me.Title = LabTitre.Text
    
                    Session("Traduit") = True
                End If
    
    
                Acc.Dispose() : Acc = Nothing
            End If
    
        End Sub
    
        Protected Sub gr_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles Gr.RowUpdating
            LoadData()
            gr.EditIndex = -1
        End Sub
    
    

     

     


    FB
    mercredi 16 novembre 2011 08:32
  • Autre info voici la classe hiddencol de mon CSS.

    .hiddencol
    {
        display:none;
    }

    J'ai converti la colonne BoundField idTraitement en template field.
    Avec le code suivant ça ne fonctionne pas :

                <asp:TemplateField  >
                    <EditItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("idTraitement") %>'></asp:Label>
                    </EditItemTemplate>
                </asp:TemplateField>
    


    Avec le code suivant , ça fonctionne  :

                <asp:TemplateField  >
                    <EditItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("idTraitement") %>'></asp:Label>
                    </EditItemTemplate>
                    <ItemStyle CssClass="hiddencol" />
                </asp:TemplateField>
    

     

    Comment faire pour ne pas afficher la colonne idTraitement et qu'elle ne soit pas impactée?


    FB
    mercredi 16 novembre 2011 09:24
  • Finalement, j'ai réussi (j'avoue que je ne comprends pas pourquoi il y avait un problème avant)...

    J'ai placé la colonne à cacher en dernière colonne du GridView pour ne pas avoir de décallage de header.

     <asp:TemplateField  >
                    <EditItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("idTraitement") %>'></asp:Label>
                    </EditItemTemplate>
                    <ItemStyle CssClass="hiddencol" />
    </asp:TemplateField>

     


    FB
    mercredi 16 novembre 2011 11:27
  • Bonjour,

    Merci d'avoir partager votre solution avec la communauté.

    Cordialement,


    aelassas.free.fr
    mardi 29 novembre 2011 23:30
    Auteur de réponse