J'ai une page ASPX sur laquelle j'ai créé une table avec des TextBox. Je n'ai volontairement pas lié la table à des données via un FormView ou autre car même s'il n'y a pas de données, le tableau doit être affiché avec les contrôles etc...
Je fait donc un chargement des données par le code comme ceci:
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
    Private Sub ChargerSaisieDestBoues()
        Dim ds As New dsSaisies
        Dim destBoues As New dsSaisiesTableAdapters.DEST_BOUES_EVACUEESTableAdapter
 
        destBoues.Fill(ds.DEST_BOUES_EVACUEES, ucFiltres.Ouvrage.SelectedValue, Convert.ToDecimal(ucFiltres.Annees.SelectedValue), Nothing)
        destBoues.Dispose()
        destBoues = Nothing
 
        If ds.DEST_BOUES_EVACUEES.Rows.Count > 0 Then
            For i As Integer = 1 To 11
                For j As Integer = 0 To 10
                    With tbSaisieDestBoues
                        Try
                            If ds.DEST_BOUES_EVACUEES.Rows(j).Item("DEST") = CType(.FindControl("hfCode" & i), HiddenField).Value.ToString() Then
                                CType(.FindControl("txtMS" & i), TextBox).Text = ds.DEST_BOUES_EVACUEES.Rows(j).Item("TONNES_MS")
                                CType(.FindControl("txtPcentMS" & i), TextBox).Text = ds.DEST_BOUES_EVACUEES.Rows(j).Item("POURCENT_MS")
                                CType(.FindControl("txtObs" & i), TextBox).Text = ds.DEST_BOUES_EVACUEES.Rows(j).Item("OBS")
                            End If
                        Catch ex As Exception
                            Continue For
                        End Try
                    End With
                Next
            Next
        End If
 
        ds.Dispose()
        ds = Nothing
    End Sub
Côté client, j'intercepte l'événement Change des TextBox. En fait, je pensais faire ainsi car j'ai remarqué que les valeurs n'étaient inscrites dans le DOM, ce que je fait de cette manière (je ne sais pas s'il y a un moyen spécifique de le faire):
Code javascript : 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
<script type="text/javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(TriggerChangeTextBox);
 
    $(document).ready(function () {
        TriggerChangeTextBox();
    });
 
    function TriggerChangeTextBox() {
        for (var i = 1; i < 12; i++) {
            /* Permet de capturer l'évènement Change. */
            $(':input[name$="txtMS' + i + '"]').trigger('change');
            $(':input[name$="txtPcentMS' + i + '"]').trigger('change');
            $(':input[name$="txtObs' + i + '"]').trigger('change');
 
            /*  Inscription de la valeur du TextBox directement dans le DOM,
            sinon la valeur ne sera pas considéré comme changée côté serveur. */
            $(':input[name$="txtMS' + i + '"]').on('change', function () {
                $(this).attr('value', $(this).val());
            });
            $(':input[name$="txtPcentMS' + i + '"]').on('change', function () {
                $(this).attr('value', $(this).val());
            });
            $(':input[name$="txtObs' + i + '"]').on('change', function () {
                $(this).attr('value', $(this).val());
            });
        }
    }
</script>

Le problème, c'est que du côté serveur, les données inscrites dans les TextBox n'ont pas changées lorsque je les modifient. Quelqu'un saurait-il d'où pourrait venir le problème ?