La modification de la couleur de la ligne sélectionnée dans asp.net gridview
Salut, je suis en train de changer la couleur de la ligne sélectionnée dans la asp.net gridview j'ai défini ma grille vue comme
<asp:GridView ID="gridContractor" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" CssClass="GridViewStyle" GridLines="None" EnableModelValidation="True"
DataKeyNames="DeviceID" OnRowCommand="gridContractor_RowCommand" OnPageIndexChanging="gridContractor_PageIndexChanging"
Width="100%" EmptyDataText = "No records to display" EmptyDataRowStyle-HorizontalAlign="Center">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField HeaderText="Device IMEI" DataField="DeviceID" Visible="false">
<HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" />
<ItemStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="175" />
</asp:BoundField>
<asp:BoundField HeaderText="Person Name" DataField="PersonName">
<HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" />
<ItemStyle HorizontalAlign="Left" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField HeaderText="#Observations" DataField="GpsPointsCount" ControlStyle-Width="50px">
<HeaderStyle HorizontalAlign="Right" VerticalAlign="Middle" />
<ItemStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="50" />
</asp:BoundField>
<asp:BoundField HeaderText="#Violations" DataField="ViolationCount" ControlStyle-Width="60px">
<HeaderStyle HorizontalAlign="Right" VerticalAlign="Middle" />
<ItemStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="60" />
</asp:BoundField>
<asp:TemplateField HeaderText="" ItemStyle-HorizontalAlign="Center" HeaderStyle-Width="50">
<ItemTemplate>
<asp:Button ID="btnEdit" runat="server" Text="View" CommandName="View" Enabled="true" OnClick="btn_GrdClick"
CommandArgument="<%#Bind('DeviceID') %>" />
</ItemTemplate>
<HeaderStyle Width="50" />
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>
</Columns>
<RowStyle CssClass="RowStyle" />
<EmptyDataRowStyle CssClass="EmptyRowStyle" />
<PagerStyle CssClass="PagerStyle" />
<SelectedRowStyle BackColor="AliceBlue" />
<HeaderStyle CssClass="HeaderStyle" />
<EditRowStyle CssClass="EditRowStyle" />
<AlternatingRowStyle CssClass="AltRowStyle" />
</asp:GridView>
et j'ai manipulé l'événement click du bouton le problème est que chaque fois que je suis à la sélection d'une ligne à la ligne précédente de la couleur n'est pas changé, même si, je le fais. une fois cliqué sur la ligne reste jaune quelqu'un peut-il m'aider svp
mon aspx.cs code
protected void btn_GrdClick(object sender, EventArgs e)
{
GridViewRow PreviousRow = Session["PreviousRow"] as GridViewRow;
if (PreviousRow != null)
PreviousRow.ForeColor = Color.White;
GridViewRow row = (GridViewRow)((Button)sender).NamingContainer;
row.ForeColor = Color.Yellow;
Session["PreviousRow"] = row;
}
OriginalL'auteur Vishweshwar Kapse | 2013-06-24
Vous devez vous connecter pour publier un commentaire.
GridViewRow
est un contrôle. Comme chaque objet sur la page, il sera créé lors de la page de cycle de vie.La référence que vous tenez dans
Session
est de l'objet créé au cours de la dernière demande.Pour résoudre le problème, de ne garder que l'indice(ou clé) de la ligne dans
Session
et l'utiliser pour changer la couleur de la ligne précédente.Vous êtes les bienvenus. 🙂
OriginalL'auteur nunespascal
OriginalL'auteur Hiren
essayer quelque chose comme ci-dessous.
OriginalL'auteur Jalpesh Vadgama
Je cherchais une solution à ce problème, et puis vu un couple de fils comme cela de mentionner que vous avez besoin de suivre la ligne sélectionnée dans la session. Tout cela peut être vrai pour une publication complète lorsqu'elle est partielle, j'ai trouvé une meilleure solution à l'aide de Css.
Gridview est dans un panneau de mise à jour, la div entourant dispose d'une classe=grille et le contrôle gridview a class=datatable ensuite, les éléments suivants sont définis dans le Gridview;
RowStyle CssClass="item-ligne"
SelectedRowStyle CssClass="selectedItem-ligne"
Ensuite l'associé css ressemble à ceci;
OriginalL'auteur Atters
1) la Première chose que vous devez faire est de gérer la Grille RowCommand événement, protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e). Ce que vous faites est le traitement de l'événement click du bouton séparé pour le contrôle gridview de l'événement de la commande.
2) vous pouvez attribuer un indice de l'argument de la commande, et de changer la ligne, de la couleur et de définir toutes les autres lignes à la couleur par défaut. Un exemple peut être trouvé ici
Espère que cette aide,
OriginalL'auteur bazz
Utilisation GridView Événement Load
J'ai donné l'exemple de mon code,
OriginalL'auteur