Ciao a tutti,
io ho un data grid che carico tramite una ricerca. Ora nel DataGrid ho una textbox e un checkbox che sono modificabili.

Riesco a recuperare il valore della check ma non quello della textbox. Dove sbaglio?

codice:
<asp:DataGrid ID="dtgIncassi" runat="server" Width="100%" BorderColor="#E7E7FF" BorderStyle="None"
                                        BackColor="White" CellPadding="3" CellSpacing="1" GridLines="Horizontal" BorderWidth="0px" ForeColor="Black" AutoGenerateColumns="False" DataKeyField="id_incasso">
                                        <AlternatingItemStyle BackColor="#D7F19D" Font-Bold="True" Font-Size="8pt"></AlternatingItemStyle>
                                        <ItemStyle BackColor="#E9E9E9" Font-Bold="True" Font-Size="8pt"></ItemStyle>
                                        <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="DimGray" Font-Size="8pt">
                                        </HeaderStyle>
                                        <PagerStyle Mode="NumericPages" HorizontalAlign="Center" CssClass="testo6" Height="20px"
                                            Font-Size="8pt" BackColor="#E9E9E9" Font-Bold="True"></PagerStyle>
                                        <Columns>
                                            <asp:BoundColumn DataField="a.id_venduto" HeaderText="Codice Vendita"></asp:BoundColumn>
                                            <asp:BoundColumn DataField="ragione_sociale" HeaderText="Fornitore"></asp:BoundColumn>
                                            <asp:BoundColumn DataField="data_vendita" HeaderText="Data Vendita" DataFormatString="{0:dd/MM/yyyy}"></asp:BoundColumn>
                                            <asp:BoundColumn DataField="servizio" HeaderText="Servizio" DataFormatString="{0:F}">
                                                <ItemStyle Width="100px" />
                                            </asp:BoundColumn>
                                            <asp:BoundColumn DataField="nomeCognome" HeaderText="Collaboratore">
                                                <ItemStyle Width="100px" />
                                            </asp:BoundColumn>
                                            <asp:BoundColumn DataField="provv_azienda" HeaderText="Provv. A">
                                                <ItemStyle Width="60px" />
                                            </asp:BoundColumn>
                                            <asp:BoundColumn DataField="provv_azienda_p" HeaderText="Provv. A %">
                                                <ItemStyle Width="60px" />
                                            </asp:BoundColumn>
                                            <asp:TemplateColumn HeaderText="Rif. Documento">
                                                <ItemTemplate>
                                                    <asp:TextBox ID="cbxDocumento" Visible="true" runat="server" CssClass="input" >
                                                    </asp:TextBox>
                                                </ItemTemplate>
                                            </asp:TemplateColumn>
                                            <asp:TemplateColumn HeaderText="Incasso F.">
                                                <ItemTemplate>
                                                    <asp:CheckBox ID="cbxIncassato" Visible="true" runat="server" Checked='<%# iif(Container.DataItem("incassato")=True,True,False) %>'>
                                                    </asp:CheckBox>
                                                    <asp:Label ID="id_incasso" Visible="false" runat="server" Text='<%# Container.DataItem("id_incasso") %>'></asp:Label>
                                                </ItemTemplate>
                                            </asp:TemplateColumn>
                                            <asp:TemplateColumn HeaderText="Paga D." Visible=false>
                                                <ItemTemplate>
                                                    <asp:CheckBox ID="cbxPagato" Visible="true" runat="server" Checked='<%# iif(Container.DataItem("pagato")=True,True,False) %>'>
                                                    </asp:CheckBox>
                                                    
                                                    <asp:Label ID="id_venduto" Visible="false" runat="server" Text='<%# Container.DataItem("a.id_venduto") %>'></asp:Label>
                                                </ItemTemplate>
                                            </asp:TemplateColumn>
                                        </Columns>
                                    </asp:DataGrid>
Ecco il VB
codice:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not IsPostBack Then
            BindData()
            fill_fornitori()
            Enable_Disable_Panel("Disable")
        End If



    End Sub
    Sub fill_fornitori()

        Dim sql As String
        sql = "SELECT  id_fornitore, ragione_sociale FROM fornitori "

        Dim MyConnection As New OleDbConnection(connetti)
        Dim MyCommand As New OleDbCommand(sql, MyConnection)
        Dim myDataSet As New System.Data.DataSet
        Dim myDataAdapter As OleDbDataAdapter
        myDataAdapter = New OleDbDataAdapter(MyCommand)
        myDataAdapter.Fill(myDataSet, "result")

        If myDataSet.Tables("result").Rows.Count > 0 Then
            fornitore.DataSource = myDataSet.Tables("result")
            fornitore.DataBind()

        Else
            fornitore.ClearSelection()
            fornitore.Items.Add("Non Disponibile")
        End If
        fornitore.Items.Add("Tutti")
        fornitore.Items.FindByValue("Tutti").Selected = True
    End Sub




    Function BindData(Optional ByVal id_fornitore As String = "", Optional ByVal id_servizio As String = "", Optional ByVal id_dipendente As String = "")

        Dim myDataSet As New System.Data.DataSet
        Dim MyConnection As OleDbConnection
        MyConnection = New OleDbConnection(connetti())
        Dim myoledbDataAdapter As OleDbDataAdapter
        Dim sql As String


        If id_fornitore = "Non Disponibile" Or id_fornitore = "Tutti" Then id_fornitore = ""
     
        Dim filtro_fornitore As String
        filtro_fornitore = " AND fornitori.id_fornitore = " + id_fornitore
   
        If id_fornitore = "" Then filtro_fornitore = ""

        sql = "SELECT * FROM (SELECT fornitori.ragione_sociale,fornitori.id_fornitore,servizi.servizio,servizi.servizio,servizi.provv_azienda,servizi.provv_azienda_p, ( dipendenti.nome + space(1) + dipendenti.cognome) AS nomeCognome, vendite.id_venduto AS id_venduto,vendite.pagato, vendite.data_vendita FROM  Fornitori, Servizi, Vendite, Dipendenti WHERE  fornitori.id_fornitore = vendite.id_fornitore AND servizi.id_servizio = vendite.id_servizio AND dipendenti.id_dipendente = vendite.id_dipendente " + filtro_fornitore + ") AS a LEFT JOIN (SELECT incassi.id_incasso,incassi.id_venduto,incassi.incassato FROM Incassi where incassi.incassato<>-1) AS b on a.id_venduto = b.id_venduto ORDER BY vendite.data_vendita DESC"
       

        Dim MyCommand As New OleDbCommand(sql, MyConnection)
        Dim dv As System.Data.DataView
        Try
            myoledbDataAdapter = New OleDbDataAdapter(MyCommand)
            myoledbDataAdapter.Fill(myDataSet, "result")
        Catch ex As OleDbException
            Response.Write(ex.Message)
            Response.Write("<script language='javascript'>alert('.::ERRORE::.');</" + "SCRIPT>")
        Finally
            MyConnection.Close()
            dtgIncassi.CurrentPageIndex = 0
            dtgIncassi.DataSource = myDataSet.Tables("result")
            dtgIncassi.DataBind()

        End Try
        Return (myDataSet.Tables("result"))
    End Function




    Protected Sub btnSalva_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSalva.Click

        Dim sql As String
        Dim sql1 As String
        Dim incassato As String
        Dim Documento As String
        Dim pagato As String
        Dim i As Integer
        Dim errore As Boolean
        If dtgIncassi.Items.Count > 0 Then
            For i = 0 To dtgIncassi.Items.Count - 1

                Dim _incassato As New CheckBox
                _incassato = CType(dtgIncassi.Items(i).Cells(4).FindControl("cbxIncassato"), CheckBox)



                Dim _pagato As New CheckBox
                _pagato = CType(dtgIncassi.Items(i).Cells(4).FindControl("cbxPagato"), CheckBox)
       
               'Come recupero il valore della textbox????

                Dim _id_incasso As New Label
                _id_incasso = CType(dtgIncassi.Items(i).Cells(5).FindControl("id_incasso"), Label)
                Dim _id_venduto As New Label
                _id_venduto = CType(dtgIncassi.Items(i).Cells(5).FindControl("id_venduto"), Label)

                If _incassato.Checked = True Then
                    incassato = "True"
                Else
                    incassato = "False"
                End If

                If _pagato.Checked = True Then
                    pagato = "True"
                Else
                    pagato = "False"
                End If




                If _id_incasso.Text = "" Then
                    sql = " INSERT INTO incassi (id_venduto, data_incasso, incassato, rif_documento) VALUES ('" + _id_venduto.Text + "','" + String.Format("{0:dd/MM/yyyy}", Now) + "'," + incassato + ",'" + incassato + "')"
                Else
                    sql = "UPDATE Incassi SET incassato=" + incassato + " WHERE id_incasso= " + CStr(_id_incasso.Text)
                End If

                'sql1 = "UPDATE Vendite SET pagato=" + pagato + " WHERE id_venduto= " + CStr(_id_venduto.Text)

                Dim tran As OleDbTransaction
                Dim MyConnection As OleDbConnection
                MyConnection = New OleDbConnection(connetti())
                Dim MyCommand As New OleDbCommand(sql, MyConnection)
                ' Dim MyCommand1 As New OleDbCommand(sql1, MyConnection)
                Try
                    MyConnection.Open()
                    tran = MyConnection.BeginTransaction
                    MyCommand.Transaction = tran
                    MyCommand.ExecuteNonQuery()
                    'MyCommand1.Transaction = tran
                    'MyCommand1.ExecuteNonQuery()
                    tran.Commit()
                    errore = False
                Catch EX As OleDbException
                    errore = True
                    Response.Write(EX.Message)
                    tran.Rollback()
                    MyCommand.Dispose()
                    MyConnection.Close()
                    'MyCommand1.Dispose()
                Finally
                    MyCommand.Dispose()
                    'MyCommand1.Dispose()
                    MyConnection.Close()
                End Try
            Next
            If errore = False Then
                Response.Write("<script language='javascript'>alert('Inserimento Effettuato Correttamente!');</" + "SCRIPT>")
                Enable_Disable_Panel("Disable")
            End If
        Else
            Response.Write("<script language='javascript'>alert('ATTENZIONE! Non Esistono Elementi');</" + "SCRIPT>")
        End If


    End Sub


    Protected Sub btnCerca_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCerca.Click

        BindData(fornitore.SelectedValue)
        Enable_Disable_Panel("Enable")
    End Sub


    Sub Enable_Disable_Panel(ByVal mode)
        If mode = "Enable" Then
            pnlDataGrid.Visible = True
            btnSalva.Visible = True
        ElseIf mode = "Disable" Then
            pnlDataGrid.Visible = False
            btnSalva.Visible = False
        End If


    End Sub
Chiaro cosa dovrei fare? Grazie a tutti