Bonjour,
Je suis complètement bloquée dans la suite de mon développement.
J'ai ce bout de code dans ma page aspx :
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) :
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 :
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.
Partager