Bonjour,
j'ai 1 datagrid avec 2 colonnes de type templateColumn (pour pouvoir les modifier avec 1 EditCommandColumn) mais selon les "circonstances" il faudrait que j'empêche la modification de l'une ou l'autre des colonnes...
Pour être plus clair voici 1 partie de mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="BonsLivraisonsCtrlAdresse.ascx.vb" Inherits="Sagem.DNN.Modules.BonsLivraisonsCtrlAdresse.BonsLivraisonsCtrlAdresse" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
....
<asp:datagrid id="DG_CtrlAdresse" runat="server" Width="1800px" MaxWidth="2000px" AllowSorting="True"
CellPadding="0" BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#3366CC"
AutoGenerateColumns="False" GridLines="None"
OnEditCommand="Edit"
OnUpdateCommand="Update"
OnCancelCommand="Cancel">
....
<Columns>
<asp:EditCommandColumn HeaderText="Action" HeaderStyle-ForeColor="red" HeaderStyle-Font-Bold="True"
HeaderStyle-HorizontalAlign="Left" ItemStyle-width="100px"
ItemStyle-HorizontalAlign="Left" ItemStyle-ForeColor="red" ItemStyle-Font-Bold="True"
CancelText="Annuler" UpdateText="MAJ" EditText="Modifier">
</asp:EditCommandColumn>
<asp:BoundColumn DataField="Ad_idAdresse" HeaderText="Adresse" Visible="false" ReadOnly="true"></asp:BoundColumn>
<asp:BoundColumn DataField="En_idEntreprise" HeaderText="Adresse" Visible="false" ReadOnly="true"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Entreprise">
<ItemTemplate>
<%#Container.DataItem("En_sNom")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="TextBox2" name="TextBox2" Value='<%#Container.DataItem("En_sNom")%>' runat="Server" Width="400" ></asp:TextBox>
</EditItemTemplate>
<ItemStyle Width="500px"></ItemStyle>
</asp:TemplateColumn>
<asp:BoundColumn DataField="Si_sNomSite" HeaderText="Site" ReadOnly="true" ItemStyle-Width="100px"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Adresse" >
<ItemTemplate>
<%#Container.DataItem("Ad_sAdresse")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="TextBox1" name="TextBox1" Value='<%#Container.DataItem("Ad_sAdresse")%>' runat="Server" Width="400" ></asp:TextBox>
</EditItemTemplate>
<ItemStyle Width="500px"></ItemStyle>
</asp:TemplateColumn>
....
<asp:TemplateColumn HeaderText="Cocher pour<br/>invalider l'entreprise" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:CheckBox ID="chkSelectionEn" Runat="server" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" width="150px"></ItemStyle>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Cocher pour<br/>invalider l'adresse" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:CheckBox ID="chkSelectionAd" Runat="server" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" width="150px"></ItemStyle>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Cocher pour mettre en attente" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:CheckBox ID="chkAttente" Runat="server" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" width="150px"></ItemStyle>
</asp:TemplateColumn>
</Columns>
<PagerStyle Height="20px" HorizontalAlign="Left" ForeColor="#003399" BackColor="#99CCCC" Mode="NumericPages"></PagerStyle>
..... |
Les 2 colonnes en question sont Entreprise et Adresse. Elles contiennent respectivement les controls TextBox2 et TextBox1, que je voudrais rendre "non-editable" selon certains critères....
J'essaye de selectionner mon controle comme ça mais sans résultat :
1 2
|
DG_CtrlAdresse.FindControl("TextBox2").EnableViewState = False |
J'ai cru lire que le Datagrid "changeait" les ID des controles à sa manière, et qu'on ne peut donc pas selectionner le control par son Id ...Et je ne vois pas comment faire alors...
Je pense qu'il faut partir d'un truc comme ça :
DG_CtrlAdresse.EditItemIndex = e.Item.ItemIndex
mais je vois pas comment aller + loin...
Merci d'avance
Partager