Bonjour,

Je suis complètement bloquée dans la suite de mon développement.

J'ai ce bout de code dans ma page aspx :

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
 
 <asp:DetailsView ID="idDV" runat="server" 
        DataSourceID="ODS"
        DefaultMode="Edit"
        DataKeyNames="RIW_ID" AutoGenerateRows="False">
        <Fields>
 
 
<asp:TemplateField HeaderText="Déroulement de l'incident : ">
<EditItemTemplate>
    <asp:GridView ID="flowGV" runat="server" ShowFooter="true" AutoGenerateColumns="false" GridLines="None" ShowHeader="true" OnRowDeleting="flowGV_RowDeleting">
        <Columns>
            <asp:TemplateField HeaderText="Date/Heure">
                <ItemTemplate>
                    <asp:TextBox ID="RIW_F_DateTxt" runat="server" Text='<%# GetDate(Eval("RIW_F_Date")) %>' MaxLength="10"></asp:TextBox>                                                                                                         
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Description">
                <ItemTemplate>
                    <asp:TextBox ID="RIW_F_FlowTxt" runat="server" Text='<%# Eval("RIW_F_Flow") %>' MaxLength="1000" Width="400px" Height="50px" TextMode="MultiLine"></asp:TextBox>
                </ItemTemplate>
                <FooterStyle HorizontalAlign="Right" />
                <FooterTemplate>
                    <asp:Button ID="addFlowBtn" runat="server" Text="+" OnClick="addFlowBtn_Click"/>
                </FooterTemplate>
            </asp:TemplateField>
            <asp:CommandField ShowDeleteButton="true" />
        </Columns>
    </asp:GridView>
    <asp:ObjectDataSource ID="flowODS" runat="server" DeleteMethod="Delete" InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" SelectMethod="GetDataByRIW" TypeName="RapportsIncidentWebApp.DAL.RapportsIncidentDataSetTableAdapters.RIW_FLOWSTableAdapter" UpdateMethod="Update">
        <SelectParameters>
            <asp:QueryStringParameter Name="RIW_F_RIW_RIWParam" QueryStringField="id" Type="Int32" />
        </SelectParameters>
    </asp:ObjectDataSource>
</EditItemTemplate>
</Fields>
</asp:DetailsView>
J'ai donc une DetailsView qui fonctionne très bien au premier affichage avec (notamment) un GridView avec un bouton + qui appelle addFlowBtn_Click.

Dans mon code cs j'ai ce bout de code appelé lors du click sur le bouton (addFlowBtn_Click) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
foreach (Column oneCol in col)
{
   TextBox txtBox = (TextBox)GV.Rows[rowIndex].Cells[1].FindControl(oneCol.name + "Txt");
   txtBox.Text = dt.Rows[i][oneCol.name].ToString();                           
}

col est un array d'objets qui contient un nom de colonne et son type.

Ici j'ai RIW_F_Date (de type DateTime) et RIW_F_Flow (de type String).

A la ligne suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
TextBox txtBox = (TextBox)GV.Rows[rowIndex].Cells[1].FindControl(oneCol.name + "Txt")
Le contrôle RIW_F_DateTxt n'est pas trouvé et le code retourne donc null.

Par contre, ça fonctionne très bien pour le contrôle RIW_F_FlowTxt.

Mon code est identique pour les deux contrôles dans la page aspx.

La seule différence entre les deux contrôles est le type de données qu'il doit contenir. RIW_F_Date est de type Date et RIW_F_Flow de type varchar dans la base de données.

Je ne parviens pas à trouver mon erreur, j'utilise le même code à plusieurs endroit dans mon développement et tout fonctionne bien pour les type string mais pas pour ce seul type Date.

Pouvez-vous m'aider?

D'avance merci.