Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di xamax
    Registrato dal
    Oct 2001
    Messaggi
    141

    Validator in un data grid

    rieccomi..... allora:
    ho un DataGrid che già edita ed aggiorna correttamente i dati, ma vorrei inserire dei Validator sui text box attivi in modo da controllare se ciò che modifica l'utente è coerente o meno...

    pensavo di aggiungere una colonna che contenesse tutti gli eventuali messaggi di errore delle altre:

    vale a dire:
    ..........
    <asp:templatecolumn HeaderText="Pos" >
    <itemtemplate>
    <asp:label ID="Pos" runat="server" Text='<%# Container.DataItem("IDNPOS") %>' />
    </itemtemplate>
    </asp:templatecolumn >
    <asp:templatecolumn HeaderText="Errori">
    <itemtemplate>
    <asp:requiredfieldvalidator runat="server" ControlToValidate='<%# (e.Item.Cells(1).Controls(0), TextBox) %>' ErrorMessage="Inserire valore"/>

    </itemtemplate>
    </asp:templatecolumn>
    ........
    ma va in errore, come faccio a fare riferire il controllo alla riga ed alla cella che sto editando???Ciao
    -||> xamax <||-

  2. #2
    prova a guardare qui http://forum.html.it/forum/showthrea...hreadid=336499

    alla fine posto anche un mio codice.....

    comunque quello che cerchi tu è findcontrol
    Frate Priore: "È Lucifero in persona!"
    Trinità: "Lo conosci?"
    Bambino: "Mai sentito nominare, deve essere un professionista dell'est"

  3. #3
    Utente di HTML.it L'avatar di xamax
    Registrato dal
    Oct 2001
    Messaggi
    141
    Grazie Trinità
    Ho provato con FindControl come sotto descritto:

    <itemtemplate>
    <asp:requiredfieldvalidator runat="server" ErrorMessage="Inserire dato" ControlToValidate='<%#(E.Item.FindControl("Descri" )).Id %>' ID="val1" />
    </itemtemplate>

    ma mi da il seguente errore :
    BC30456: "Item" non è un membro di "System.EventArgs".

    Sicuramente non ho utilizzato FindControl come avrei dovuto....
    nessun ulteriore suggerimento.....
    Grazie e ciao
    -||> xamax <||-

  4. #4
    no il find control lo devi usare dentro la sub che ti permette di fare l'edit del record del db

    guarda:
    ---------------------------------------------------------------------
    Sub funz_edit(ByVal s As Object, ByVal e As DataGridCommandEventArgs)

    Dim id_ass As Integer
    Dim list_cli As DropDownList
    Dim dat_textb As TextBox
    Dim ore_textb As TextBox
    Dim lug_textb As TextBox
    Dim lav_texb As TextBox


    Dim str_client As String
    Dim str_data As String
    Dim str_ore As String
    Dim str_luog As String
    Dim str_lav As String


    id_ass = DataGrid1.DataKeys(e.Item.ItemIndex)
    list_cli = e.Item.FindControl("dd_client")
    dat_textb = e.Item.FindControl("dat_txb")
    ore_textb = e.Item.FindControl("or_txb")
    lug_textb = e.Item.FindControl("lug_txb")
    lav_texb = e.Item.FindControl("lav_txb")

    str_client = list_cli.SelectedItem.Text
    str_data = dat_textb.Text
    str_ore = ore_textb.Text
    str_luog = lug_textb.Text
    str_lav = lav_texb.Text


    str_luog = str_luog.Replace(",", ".")


    Dim strSQL_up As String
    strSQL_up = "Update interventi set client=@client, data=@datax, ore=@ore, dove=@dove, lavoro=@lavoro where id=@id"

    Dim comd_SQL_up As OleDbCommand

    comd_SQL_up = New OleDbCommand(strSQL_up, cnx)

    comd_SQL_up.Parameters.Add("@client", str_client)
    comd_SQL_up.Parameters.Add("@datax", OleDbType.Date).Value = str_data
    comd_SQL_up.Parameters.Add("@ore", OleDbType.Double).Value = str_ore
    comd_SQL_up.Parameters.Add("@dove", str_luog)
    comd_SQL_up.Parameters.Add("@lavoro", str_lav)
    comd_SQL_up.Parameters.Add("@id", id_ass)

    cnx.Open()
    comd_SQL_up.ExecuteNonQuery()
    cnx.Close()
    DataGrid1.EditItemIndex = -1
    bindatagrid("ID")


    End Sub
    ---------------------------------------------------------------------

    capito ?
    Frate Priore: "È Lucifero in persona!"
    Trinità: "Lo conosci?"
    Bambino: "Mai sentito nominare, deve essere un professionista dell'est"

  5. #5
    Utente di HTML.it L'avatar di xamax
    Registrato dal
    Oct 2001
    Messaggi
    141
    Grazie per la pazienza Trinità
    ho visto il tuo codice....

    list_cli = e.Item.FindControl("dd_client ")


    cos'è dd_client

    immagino sia l'id del textbox e proprio qui sta il mio problema:
    come faccio a recuperare un id di un texBox generato automaticamente dalla funzione EditItemIndex = e.Item.ItemIndex


    provo a postare tutto il codice:
    <%@ Page Language="VB" Debug="true" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>

    <html>
    <script runat="server">



    Public Sub Page_Load(Sender As Object, E As EventArgs)
    dim objConn as new OleDbConnection("Provider=IBMDA400; Data Source=192.168.0.51; User ID=WEBUSR; Password=WODSWEB")
    Dim objCmd as new OleDbDataAdapter (("SELECT * FROM YFILEURO.DBSAN00F where F6 <> 'A'"), objConn)
    'objConn.open 'Consiglio, Con l'oggetto OleDBDataAdapter non serve aprire la connessione.
    Dim ds as DataSet = new DataSet()
    objCmd.Fill(ds, "YFILEURO.DBSAM00F")
    DataGrid1.DataSource=ds.Tables("YFILEURO.DBSAM00F" ).DefaultView

    If not page.IsPostBack Then
    DataBind()
    End If
    'objConn.close
    End sub
    '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    sub DataGrid1_Edit(Obj As Object, e As DataGridCommandEventArgs)

    DataGrid1.EditItemIndex = e.Item.ItemIndex
    DataGrid1.DataBind()
    end sub
    '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>

    sub DataGrid1_Cancel(Obj As Object, e As DataGridCommandEventArgs)
    DataGrid1.EditItemIndex = -1
    DataGrid1.DataBind()
    end sub
    '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>
    sub DataGrid1_Update(Obj As Object, e As DataGridCommandEventArgs)

    Dim IdAss as Integer = DataGrid1.DataKeys(e.Item.ItemIndex)
    Dim Str1TxBx as TextBox =e.item.FindControl("?????? ")
    dim Str1 as string = Str1TxBx.Text

    Str1 = Str1.Replace("'", "'''")
    'gli altri dati li recupero così e funziona
    dim Str2 as string =(Ctype(e.Item.Cells(2).Controls(0), TextBox)).Text
    dim Str3 as string =(Ctype(e.Item.Cells(3).Controls(0), TextBox)).Text
    dim Str4 as string =(Ctype(e.Item.Cells(4).Controls(0), TextBox)).Text
    dim Str5 as string =(Ctype(e.Item.Cells(5).Controls(0), TextBox)).Text

    dim objConn1 as new OleDbConnection("Provider=IBMDA400; Data Source=192.168.0.51; User ID=WEBUSR; Password=WODSWEB; ")
    Dim objCmd1 as new OleDbCommand(("UPDATE YFILEURO.DBSAM00F SET DESCRI='") & Str1 & ("', COSPDS = ") & Str2 & (", COSLIT = ") & Str3 & (", LISLIT = ") & Str4 & (", F6 = '") & Str5 & ("' where IDNPOS =")& Ctype(e.Item.Cells(0).Controls(1), Label).Text &(""), objConn1)
    objConn1.Open
    objCmd1.ExecuteNonQuery()

    ' toglie lo stato di edit
    DataGrid1.EditItemIndex = -1
    DataGrid1.DataBind()
    objConn1.Close
    dim objConn as new OleDbConnection("Provider=IBMDA400; Data Source=192.168.0.51; User ID=WEBUSR; Password=WODSWEB;")

    Dim objCmd as new OleDbDataAdapter (("SELECT * FROM YFILEURO.DBSAN00F WHERE F6 <> 'A'"), objConn)
    objConn.open

    Dim ds as DataSet = new DataSet()
    objCmd.Fill(ds, "YFILEURO.DBSAM00F")

    DataGrid1.DataSource=ds.Tables("YFILEURO.DBSAN00F" ).DefaultView
    DataGrid1.DataBind()
    objConn.close
    end sub
    sub Page_IndexChanged (obj as Object, e as DataGridPageChangedEventArgs )
    DataGrid1.CurrentPageIndex = e.NewPageIndex
    Datagrid1.DataBind()
    end Sub


    </script>

    <body>
    <div align="center">
    <table width="100%" border="0">
    <tr>
    <td>[img]../logo45mm.jpg[/img] </td>
    <td><div align="right"><font color="#0000FF"><font size="4" face="Arial, Helvetica, sans-serif">Esempio
    di modifica dati su db AS400</font>
    </font> </div></td>
    </tr>
    </table>

    </div>
    <form runat="server">
    <asp:datagrid id="DataGrid1" runat="server" BorderColor="#000000" GridLines="both" CellPadding="4" CellSpacing="0" Width="100%" Font-Name="Arial" Font-Size="7pt" ShowFooter="false" HeaderStyle-BackColor="#cccc99" FooterStyle-BackColor="#CCCC99" ItemStyle-BackColor="#FFFFFF" AlternatingItemStyle-BackColor="#CCCCCC" AutoGenerateColumns="false" OnEditCommand="DataGrid1_Edit" OnCancelCommand="DataGrid1_Cancel" OnUpdateCommand="Datagrid1_Update" AllowSorting="true" AllowPaging="true" PageSize="12" PagerStyle-NextPageText="Avanti" PagerStyle-PrevPageText="Indietro" PagerStyle-Font-Name="Courier" OnPageIndexChanged="Page_IndexChanged" PagerStyle-BackColor="#000000" PagerStyle-BorderWidth="1" PagerStyle-BorderColor="#000000" PagerStyle-ForeColor="#CCFFCC" PagerStyle-Mode="NumericPages">
    <columns>
    <asp:templatecolumn HeaderText="Pos" >
    <itemtemplate>
    <asp:label ID="Pos" runat="server" Text='<%# Container.DataItem("IDNPOS") %>' />
    </itemtemplate>
    </asp:templatecolumn >
    <asp:templatecolumn HeaderText="Err" >
    <itemtemplate>

    </itemtemplate>
    </asp:templatecolumn >
    <asp:boundcolumn HeaderText="Località" DataField="DESCRI" />
    <asp:boundcolumn HeaderText="Costo Sterline" DataField="COSPDS" />
    <asp:boundcolumn HeaderText="COSTO Lire" DataField="COSLIT" />
    <asp:boundcolumn HeaderText="Listino" DataField="LISLIT" />
    <asp:boundcolumn HeaderText="Annulla" DataField="F6"/>
    <asp:editcommandcolumn EditText="Edita" CancelText="Cancella" UpdateText="Aggiorna" ItemStyle-Wrap="false" HeaderText="Modifica/Cancella"/>
    </columns>
    </asp:datagrid>

    </form>

    </body></html> grazie et ciao
    -||> xamax <||-

  6. #6
    si dd_client è l'id del textbox che sta dentro nel edittamplatecolumn

    io ci metto quell'id e lui se lo prende

    Stasera comunque (perchè non ce l'ho qui sotto mano) ti posto il codice della pagina aspx così vedi. Magari hai sbagliato qualche cosa lì

    Frate Priore: "È Lucifero in persona!"
    Trinità: "Lo conosci?"
    Bambino: "Mai sentito nominare, deve essere un professionista dell'est"

  7. #7
    ecco come ti dicevo la parte della pagina aspx che ti può servire

    <TD><asp:datagrid id="DataGrid1" runat="server" OnEditCommand="proc_edit" OnUpdateCommand="funz_edit" PageSize="25" DataKeyField="id" CellPadding="0" Width="700px" align="center" BorderColor="SteelBlue" BorderStyle="None" BorderWidth="0px" Font-Names="Arial" Font-Size="Smaller" ShowFooter="True" AllowPaging="True" CellSpacing="1" PagerStyle-Mode="NextPrev" OnPageIndexChanged="funz_pagin" AllowSorting="True" OnSortCommand="ordina" AutoGenerateColumns="False">
    <AlternatingItemStyle BackColor="LightBlue"></AlternatingItemStyle>
    <HeaderStyle Font-Size="X-Small" Font-Names="Arial" Font-Bold="True" ForeColor="White" BackColor="SteelBlue"></HeaderStyle>
    <Columns>
    <asp:TemplateColumn SortExpression="client" HeaderText="Cliente">
    <HeaderStyle Width="80px"></HeaderStyle>
    <ItemStyle Font-Bold="True"></ItemStyle>
    <ItemTemplate>
    <%# container.dataitem("client")%>
    </ItemTemplate>
    <EditItemTemplate>
    <aspropDownList ID="dd_client" Runat="server" datatextfield="cliente" DataValueField="cliente" DataSource="<%# dst_client%>" >
    </aspropDownList>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn SortExpression="data" HeaderText="Data">
    <HeaderStyle Width="80px"></HeaderStyle>
    <ItemTemplate>
    <%# databinder.eval (container.dataitem,"data","{0:dd/MM/yyyy}")%>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox ID="dat_txb" Runat="server" Text='<%# databinder.eval (container.dataitem,"data","{0:dd/MM/yyyy}")%>' MaxLength="10" Width="75">
    </asp:TextBox>
    <asp:RequiredFieldValidator id="Requiredfieldvalidator" runat="server" Display="Dynamic" ErrorMessage="Campo obbligatorio" ControlToValidate="dat_txb"></asp:RequiredFieldValidator>
    <asp:CompareValidator id="CompareValidator1" runat="server" ErrorMessage="Data non valida" Display="Dynamic" ControlToValidate="dat_txb" Operator="DataTypeCheck" Type="Date"></asp:CompareValidator>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn SortExpression="ore" HeaderText="Ore">
    <HeaderStyle Width="25px"></HeaderStyle>
    <ItemTemplate>
    <%# container.dataitem("ore")%>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox ID="or_txb" Runat="server" Text='<%#container.dataitem("ore")%>' MaxLength="4" Width="35">
    </asp:TextBox>
    <asp:RequiredFieldValidator id="Requiredfieldvalidator3" runat="server" Display="Dynamic" ErrorMessage="Campo obbligatorio" ControlToValidate="or_txb"></asp:RequiredFieldValidator>
    <asp:RangeValidator id="RangeValidator1" runat="server" ErrorMessage="Numero ore non vadile" Display="Dynamic" ControlToValidate="or_txb" MinimumValue="0" MaximumValue="12" Type="Double"></asp:RangeValidator>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn SortExpression="dove" HeaderText="Luogo">
    <ItemTemplate>
    <%# container.dataitem("dove")%>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox ID="lug_txb" Runat="server" Text='<%#container.dataitem("dove")%>' MaxLength="25" Width="100">
    </asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn SortExpression="lavoro" HeaderText="lavoro">
    <ItemTemplate>
    <%# container.dataitem("lavoro")%>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox ID="lav_txb" Runat="server" Text='<%#container.dataitem("lavoro")%>' MaxLength="100" Width="230" TextMode="MultiLine" Height="60">
    </asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:BoundColumn DataField="addetto" ReadOnly="True" HeaderText="Addetto"></asp:BoundColumn>
    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="aggiorna" CancelText="cancella" EditText="modifica"></asp:EditCommandColumn>
    </Columns>
    <PagerStyle HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
    </asp:datagrid>
    Frate Priore: "È Lucifero in persona!"
    Trinità: "Lo conosci?"
    Bambino: "Mai sentito nominare, deve essere un professionista dell'est"

  8. #8
    Utente di HTML.it L'avatar di xamax
    Registrato dal
    Oct 2001
    Messaggi
    141
    Trinità GRAZIE!!! per il codice che hai postato


    Ora provo ad apllicarlo al mio caso.......poi ti faccio sapere

    Ciao



    -||> xamax <||-

  9. #9
    Utente di HTML.it L'avatar di xamax
    Registrato dal
    Oct 2001
    Messaggi
    141
    Trinità, Effettivamente avevo fatto un bel minestrone.

    Il problema era che il textBox lo facevo creare in automatico,quindi non riuscivo ad assegnargli un Id su cui effettuare la validazione.
    ora effettivamente funziona....


    GrazieGrazieGrazie Grazie Grazie 1000
    -||> xamax <||-

  10. #10
    non c'è di che !
    Frate Priore: "È Lucifero in persona!"
    Trinità: "Lo conosci?"
    Bambino: "Mai sentito nominare, deve essere un professionista dell'est"

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.