none
Ricerca in GridView - come fare? RRS feed

  • Domanda

  • Buongiorno a tutti,

    VS2013 e sql2014 vb.net

    ho un gridview, devo far fare una ricerca, avendo un campo univoco non ho problemi nel cercare il dato ma come farlo??

    - Mettere una casella di testo esterna dove l'utente può scrivere  cosa cercare e poi un button che cerca

    oppure

    - Utilizzare un campo specifico del gridview editabile e quindi, una volta fatta la ricerca, posizionarmi in

       automatico sulla riga esatta trovata

    E come farlo poi in VB.NET o continuare con Javascript?

    Grazie

    Attendo vs news.

    Emanuele

    lunedì 7 luglio 2014 07:42

Risposte

  • Ciao a tutti,

    a fare quello che c'è scritto sopra non sono stato capace,

    risolto cosi:

    http://www.aspsnippets.com/Articles/Search-GridView-records-data-on-TextBox-KeyPress-using-jQuery-in-ASPNet.aspx

    Buon lavoro

    Emanueàe

    • Contrassegnato come risposta EmanueleVbSql giovedì 10 luglio 2014 09:26
    giovedì 10 luglio 2014 09:26

Tutte le risposte

  • Io sono per la prima scelta, con una casella di testo esterna al GridView e al pulsante cerca applico il filtro.
    (poi il tutto dipende da cosa vuoi ottenere graficamente)

    es:
    http://www.aspsnippets.com/Articles/Filter-GridView-with-TextBox-using-FilterExpression-in-SqlDataSource-in-ASPNet.aspx

    ciao


    Andrea Dottor
    Microsoft MVP - ASP.NET/IIS
    http://blog.dottor.net

    lunedì 7 luglio 2014 12:21
    Moderatore
  • Ciao Andrea,

    praticamente io ho il mi grid cosi composto:

    TITOLO  BARCODE COPIE

    PIPPO 0000000001 5

    PLUTO 0000000002 3

    Il campo copie è editabile dall'utente ed il campo BARCODE è univoco.

    Ecco il top sarebbe che l'utente che di default si posiziona sul campo COPIE, legga il BARCODE

    e in automatico, cercandolo nel mio grid view, mi posizioni nel campo copie della riga esatta:

    ESEMPIO SPARO IL BARCODE con valore 0000000002 ed in automatico il cursore devo farlo andare

    alla riga 2 ... e cosi via...

    Spero di essermi spiegato bene

    Emanuele

    lunedì 7 luglio 2014 12:45
  • In questo caso potresti fare tutto da javascript.
    Nella textbox 'copie' potresti aggiungere un attributo data-barcode con il valore del barcode corrispondente e da jquery puoi posizionarti in quella casella con una ricerca simile a questa:

    $("input[data-barcode='0000000001']" ).focus()

    ciao


    Andrea Dottor
    Microsoft MVP - ASP.NET/IIS
    http://blog.dottor.net

    lunedì 7 luglio 2014 12:51
    Moderatore
  • Ciao Andrea e grazie per la risposta,

    puoi, gentilmente, aiutarmi:

    1) come faccio a creare "Nella textbox 'copie' un attributo data-barcode con il valore del barcode corrispondente" ??

    posso farlo anche se le righe cambiano ogni giorno, rimanendo il barcode sempre univoco per ogni riga??

    2) $("input[data-barcode='0000000001']" ).focus() --> vuol dire creare uno script java con questa stringa e far cambiare l'attuale '0000000001' con il valore reale della riga in cui sono posizionato?

    Scusami se faccio domande stupide e se ti chiedo di aiutarmi un po più nello specifico ma sono alle prime armi e voglio capire ed imparare questo splendido mondo.

    Attendo tue news e ti ringrazio.

    Emanuele

    lunedì 7 luglio 2014 13:16
  • Nella gridview, la colonna Copie la fai diventare un TemplateField:

    <asp:TemplateField HeaderText="Copie">                
       <ItemTemplate>
    	   <asp:TextBox runat="server" id="txtCopie" />
       </ItemTemplate>
    </asp:TemplateField>

    e nell'evento RowDataBound puoi fare un

    var obj = e.Row.DataItem as MiaClasse;
    
    TextBox txtCopie = e.Row.FindControl("txtCopie") as TextBox;
    txtCopie.Attributes.Add("data-barcode", obj.Barcode);

    ciao


    Andrea Dottor
    Microsoft MVP - ASP.NET/IIS
    http://blog.dottor.net

    lunedì 7 luglio 2014 13:33
    Moderatore
  • Ciao Andrea:

    Nella gridview, la colonna Copie la fai diventare un TemplateField---> OK

    nell'evento RowDataBound puoi fare un---->OK

    e poi devo creare uno creare uno script java veri?

    Grazie ancora.

    Emanuele

    lunedì 7 luglio 2014 14:09
  • Esatto.
    Poi aggiungi i controlli per la: un input type=text ed un pulsante, ed al click del pulsante avvii il seguente codice:

    var txt = $('#clientIdTuoInput');
    $("input[data-barcode='"+ txt.val() + "']" ).focus()

    ciao

    Andrea Dottor
    Microsoft MVP - ASP.NET/IIS
    http://blog.dottor.net

    lunedì 7 luglio 2014 14:21
    Moderatore
  • Ciao di nuovo Andrea,

    ti riepilogo quello che ho capito x non fare io confusione allora:

    Nella gridview, la colonna Copie la fai diventare un TemplateField---> FATTO

    nell'evento RowDataBound puoi fare in vb.net----> Dim obj As var CType(e.Row.DataItem, MiaClasse)  mi dice TIPO "VAR" NON DEFINITO

    poi non ho capito -:)

    1) lo script java deve essere quello che mi hai postato sopra che ti reincollo?:

    var txt = $('#clientIdTuoInput');
    $("input[data-barcode='"+ txt.val() + "']" ).focus()

    2) Che vuol dire quando mi dici:

    Poi aggiungi i controlli per la: un input type=text???

    Attendo tue news e tu ringrazio per le risposte.

    EManuele


    • Modificato EmanueleVbSql lunedì 7 luglio 2014 16:59 correzione
    lunedì 7 luglio 2014 16:52
  • Non l'ho provato, ma intendo una cosa tipo questa per la ricerca:

    <script type="text/javascript">
        function cercaBarcode(){
            var txt = $('#txtSearch');
            $("input[data-barcode='"+ txt.val() + "']" ).focus()
        }
    </script>
            
    <input type="text" id="txtSearch" />
    <button onclick="cercaBarcode()">Cerca</button>

    dove txtSearch è la casella dove inserire il barcode, e alla pressione del pulsante cerca viene richiata la funzione che dovrebbe spostare il cursore nella casella di testo all'interno della tua griglia.

    ciao


    Andrea Dottor
    Microsoft MVP - ASP.NET/IIS
    http://blog.dottor.net

    lunedì 7 luglio 2014 20:48
    Moderatore
  • Buongiorno Andrea,

    ho fatto tutto mi manca solamente questa parte nell'evento RowDataBound che io

    "tradotto" in VB.NET ma mi da errore:

    var obj = e.Row.DataItem as MiaClasse;
    TextBox txtCopie = e.Row.FindControl("txtCopie") as TextBox;
    txtCopie.Attributes.Add("data-barcode", obj.Barcode);

    VB.NET

            Dim obj As var = CType(e.Row.DataItem, MiaClasse)
            Dim txtCopie As TextBox = CType(e.Row.FindControl("arrivo"), TextBox)
            txtCopie.Attributes.Add("data-barcode", obj.Barcode)

     mi dice TIPO "VAR" NON DEFINITO

    PS:

    (dovo posso trovare documentazione per imparare a scrivere funzioni in java script cosi da diventare autonomo)

    attendo tue, dai che siamo quasi arrivati, e ancora grazie per l'aiuto e la pazienza.

    Emanuele


    martedì 8 luglio 2014 06:16
  • Ciao a tutti,

    a fare quello che c'è scritto sopra non sono stato capace,

    risolto cosi:

    http://www.aspsnippets.com/Articles/Search-GridView-records-data-on-TextBox-KeyPress-using-jQuery-in-ASPNet.aspx

    Buon lavoro

    Emanueàe

    • Contrassegnato come risposta EmanueleVbSql giovedì 10 luglio 2014 09:26
    giovedì 10 luglio 2014 09:26