Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problemoni con la modifica dei dati di un datagrid

    vi spiego la situazione ho un datagrid che visualizza i dati inseriti fino a quel momento !
    cliccando su modifica vengono visualizzati i dati inseriti abilitati per la modifica (i campi sono due un textBox per il titolo della news e una textArea per il testo vero e proprio della news)

    questo è il codice che associo al link che conferma la modifica

    function UpdateDataStore(e as DataGridCommandEventArgs) as boolean
    dim i,j as integer
    dim params(2) as string
    dim strText as string
    dim blnGo as boolean = true

    j = 0
    for i = 1 to e.Item.Cells.Count - 3

    strText = Ctype(e.Item.Cells(i).Controls(0), TextBox).Text
    if strText <> "" then
    params(j) = strText
    j = j + 1
    else
    blnGo = false
    lblMessage.Text = "Non hai inserito un valore"
    end if
    next

    if not blnGo then
    return false
    exit function
    end if

    dim strSQL as string = "UPDATE tbnews SET titolo = '"& Replace(params(0), "'" , "''") & "', testo = '"& Replace(params(1), "'" , "''") & "'" & _
    " WHERE id = " & CType(e.item.cells(0).Controls(1), Label).Text

    ExecuteStatement(strSQL)
    return blnGo
    end function


    mentre questa è la tecnica che utilizzo per visualizzare una textArea in fase di modifica al posto del classico TextBox

    <asp:TemplateColumn HeaderText="Testo News">
    <ItemTemplate>
    <%#DataBinder.Eval(Container.DataItem, "testo") %>
    </ItemTemplate>
    <EditItemTemplate>
    <nobr />
    <asp:TextBox runat="server" width="500" TextMode="MultiLine" Rows="15" id="testo" Text='<%# DataBinder.Eval(Container.DataItem, "testo") %>' />
    </EditItemTemplate>
    </asp:TemplateColumn>

    poi ovviamente ho le altre colonne!!!

    l'errore me lo da in questa riga

    strText = Ctype(e.Item.Cells(i).Controls(0), TextBox).Text

    System.InvalidCastException: Cast specificato non valido.

    come posso fare?

  2. #2
    Prova a usare FindControl("nome del controllo che hai messo nella edititemtemplate). Ciao

  3. #3
    ci avevo provato però ne ho due da cercare non solo uno capisci?
    se io specifico il nome di uno dei due non mi trova l'altro

  4. #4
    Utente di HTML.it L'avatar di nicki
    Registrato dal
    Dec 2000
    Messaggi
    139
    Mi sa che per agganciare il livello modifica (editeitemtemplate) devi utilizzare Controls[1] (Controls[0] é il livelli ItemTemplate)
    Ciao, nic.

  5. #5
    Scusamiù: ma se tu hai due textbox, mica si chiamano nello stesso modo? Per cui perché non puoi fare FindControl("nomecontrollo1") e FindControl("nomecontrollo2")?

  6. #6
    ci avevo pensato anch'io e ci avevo anche provato ma mi dava errore!
    mi potresti far vadere come deve essere la mia funzione per l'aggiornamento?

    function UpdateDataStore(e as DataGridCommandEventArgs) as boolean
    dim i,j as integer
    dim params(2) as string
    dim strText as string
    dim blnGo as boolean = true

    j = 0
    for i = 1 to e.Item.Cells.Count - 3

    strText = Ctype(e.Item.Cells(i).Controls(0), TextBox).Text
    if strText <> "" then
    params(j) = strText
    j = j + 1
    else
    blnGo = false
    lblMessage.Text = "Non hai inserito un valore"
    end if
    next

    if not blnGo then
    return false
    exit function
    end if

    dim strSQL as string = "UPDATE tbnews SET titolo = '"& Replace(params(0), "'" , "''") & "', testo = '"& Replace(params(1), "'" , "''") & "'" & _
    " WHERE id = " & CType(e.item.cells(0).Controls(1), Label).Text

    ExecuteStatement(strSQL)
    return blnGo
    end function

    come devo modificarla?

  7. #7
    Prova una cosa del genere

    function UpdateDataStore(e as DataGridCommandEventArgs) as boolean


    dim id as string= Ctype(e.Item.FindControl("tre"), Label).Text
    dim uno as string= Ctype(e.Item.FindControl("uno"),TextBox).Text
    dim due as string= Ctype(e.Item.FindControl("due"), TextBox).Text



    dim strSQL as string = "UPDATE tbnews SET titolo = '"& uno & "', testo = '"& due & _
    " WHERE id = " tre

    ExecuteStatement(strSQL)

    end function

    Per accertarti che ci siano input nelle textbox usa i controlli ASPNETValidator

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.