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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
DG_CtrlAdresse.EditItemIndex = e.Item.ItemIndex
mais je vois pas comment aller + loin...
Merci d'avance