Meilleur auteur de réponses
GridView : efface des colonnes du dataset

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))
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- Marqué comme réponse FrançoisBOSSANT 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- Modifié FrançoisBOSSANT mercredi 16 novembre 2011 08:40
-
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 -
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- Marqué comme réponse FrançoisBOSSANT mercredi 16 novembre 2011 11:27
-