Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di Vailfox
    Registrato dal
    Feb 2005
    Messaggi
    320

    aggiungere DropDownList a Datagrid

    Ciao a tutti, ho popolato un datagrid associando alla proprieta datasource un datatable precedentemente creato e popolato da me manualmente.

    Il problema è che le prime n righe dei datatable conterrano dati eterogenei, mentre dovrei aggiungere manualmente un'altra riga al datatable che conterrebbe un dropdownlist, ovvero un controllo.

    Il problema è che non riesco ad aggiungere il controllo alla datarow appena creata (copiando lo schema della datatable precedente).

    Tutto ciò mi è necessario in modo tale da bindare in fase finale il tutto con il datagrid.

    Consigli??

  2. #2
    Utente di HTML.it L'avatar di Vailfox
    Registrato dal
    Feb 2005
    Messaggi
    320
    Up!

  3. #3
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580
    1)converti la colonna da te desiderata in un templateItem
    2)vai nell'itemtemplate e aggiungi la combo
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  4. #4
    Utente di HTML.it L'avatar di Vailfox
    Registrato dal
    Feb 2005
    Messaggi
    320
    dunque, non ho ben capito cosa intendi fare. Forse intendevi creare una templatecolumn nel datagrid tipo:


    e inserire
    codice:
      <asp:DataGrid ID="dgr_dettaglio_carrello" ShowFooter="true" CssClass="style_carrello_datagrid" CellPadding="6" DataKeyField="id" AutoGenerateColumns="false" Width="100%"  runat="server">        <ItemStyle CssClass="style_carrello_datagrid" />         <Columns>             <asp:TemplateColumn HeaderText="Quantità" >                   <ItemStyle CssClass="style_carrello_datagrid" />                    <FooterStyle CssClass="style_carrello_datagrid" />                   <HeaderStyle CssClass="style_carrello_datagrid" />                   <ItemTemplate>                        <asp:TextBox runat="server" id="quantita" MaxLength="2" Columns="2" Text='<%# Container.DataItem("quantita") %>' />                        <asp:ImageButton runat="server" CommandName="imgbtn_aggiorna_quantita" ImageAlign="AbsMiddle" ImageUrl="~/Controls/Image_Controls/oggetti_icn_refresh.png"  />                        <asp:ImageButton CommandName="imgbtn_elimina_prodotto" runat="server" ImageUrl="~/Controls/Image_Controls/crocetta_rossa.png" BorderWidth="0" ImageAlign="AbsMiddle" />                     </ItemTemplate>               </asp:TemplateColumn>
    e poi inserire la dropdownlist direttamente tra i tag itemTemplate del controllo ascx in questione.

    Ad ogni modo al momento ho risolto aggiungendo la dropdownlist via codice dopo il binding dei dati del datagrid in questo modo:

    codice:
     dgr_dettaglio_carrello.Items(indice_riga_spedizione).Cells(1).FindControl("ph_spedizione").Controls.Add(drd_spedizione)
    il problema è che adesso vorrei eseguire 2 funzioni che aggiornano e popolano il dropdownlist quando viene inserito nel datagrid e quando si cambia la voce selezionata all'interno della dropdownlist stessa.

    le 2 funzioni sarebbero:

    codice:
         Protected Sub Inizializza_Drd_Spedizione(ByVal sender As DropDownList, ByVal e As EventArgs) Handles drd_spedizione.Load         'elenco servizi di spedizione
    la seconda:

    codice:
     Protected Sub Seleziona_Spedizione(ByVal sender As Object, ByVal e As EventArgs) handles drd_spedizione.SelectedIndexChanged
    Il problema è che la dropdownlist non esegue la sub Seleziona_Spedizione(), oppure l'evento viene sovrascritto perchè tramtie la funzione Carica_Datagrid eseguita all'evento mydatagrid.PreRender creo a runtime il dropdownlist stesso.

    Capisco di essere stato molto confusionario, ma se solo avete capito qualcosa cerco di semplificare il tutto.

  5. #5
    Utente di HTML.it L'avatar di Vailfox
    Registrato dal
    Feb 2005
    Messaggi
    320
    Penso di aver capito dove stà il problema.
    Sto realizzando un carrello per un sito ecommerce.

    in poche parole il pulsantino che permette di aggiungere un prodotto al carrello non fa altro che
    aggiornare il valore di una hashtable e copiarla dentro una Session appositamente creata.
    La funzione che fa tutto ciò viene eseguita da mydatagrid.itemcommand (questo perchè tutti i prodotti da inserire vengono bindati in un datagrid). Il tutto e implementato in uno user contro che si chiama elenco_prodotti.

    Fatto ciò, ho creato un altro controllo personalizzato che si chiama dettaglio_carrello.
    in questo user contro ho inserito un datagrid che dovrebbe visualizzare ciò che si trova all'interno del carrello. Nel codice, creo una funzione che i chiama MyDatagrid_Load(sender es obj.. ... , e as... .. ) handles MyDatagrid.PreRender .

    dunque legge recupera l'hashtable dalla Session e la binda nel datagrid. Dunque non appena aggiungo un prodotto, al click sull'icona "aggiungi prodotto" avviene il post back, e quando mi si riapre la pagina il controllo dettaglio_carrello funziona correttamente. QUESTO perchè utilizzo MyDatagrid.PreRender, se sostituisco prerender con mydattagrid.Load devo clikkare fare in modo da ricreare 2 post back affinchè riesca a leggere la session con i valori reali.

    Detto ciò, se continuo ad utilizzare PreLoad, perdo la funzionalità dell'evento mydropdownlist.SelectedIndexChanged di una dropdownlist che aggiungo successivamente al datagrid contenente il dettaglio_carrello a runtime.

    Come potrei risolvere?? cambio MyDataGrid.PreRender con MyDatagrid.load la dropdown funziona ma ho il problema della session "ritardata".

  6. #6
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580
    codice:
    <asp:GridView ID="GRW_Feed" runat="server" AllowPaging="True" 
        AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="codfeedback" 
        DataSourceID="SqL_Feed">
        <Columns>
            <asp:BoundField DataField="DescFeedback" HeaderText="DescFeedback" />
            <asp:TemplateField HeaderText="SI">
                <ItemTemplate>
                    <asp:RadioButton ID="CHK_SI" runat="server" 
                        GroupName='<%# Eval("codfeedback") %>'  />
                </ItemTemplate>
            </asp:TemplateField>..........................
    questo è un pezzo di codice che ho nel m io progetto
    come vedi devi inserire un itemtemplate e dentro ci metti la combo
    solo li puoi al databind della griglia caricarla e settare il valore selecteditem

    come fai tu si puo fare, ma è complicato!!!

    quindi:
    vai nelle property delle colonne
    clicca su trasforma in itemtemplatecolumn
    poi clicca su modifica itemtemplate
    e vai nella tua colonna che hai modificato
    e li inserisci la combo
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  7. #7
    Utente di HTML.it L'avatar di Vailfox
    Registrato dal
    Feb 2005
    Messaggi
    320
    ok, però così ho tante combobox quante sono le righe del datagrid giusto??

    a me serve accodare una sola combobox alla fine di tutte le righe associate dinamicamante dal datasource.

    in prativa

    datagrid
    --- prodotto
    --- prodottp
    ---- n prodotti
    ---- combobox spedizione
    -----totale


    i primi n prodotti sono caricati nel datagrid tramite il databind.
    la combobox la dovrei inserire manualmente alla fine.

  8. #8
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580
    Originariamente inviato da Vailfox
    ok, però così ho tante combobox quante sono le righe del datagrid giusto??

    a me serve accodare una sola combobox alla fine di tutte le righe associate dinamicamante dal datasource.

    in prativa

    datagrid
    --- prodotto
    --- prodottp
    ---- n prodotti
    ---- combobox spedizione
    -----totale


    i primi n prodotti sono caricati nel datagrid tramite il databind.
    la combobox la dovrei inserire manualmente alla fine.
    uhm. allora potresti gestire il footertemplate, tipo mettere 2 righe, uno con la combo e sotto il totoale

    cmq hai capito come trasformarla in un template?
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  9. #9
    Utente di HTML.it L'avatar di Vailfox
    Registrato dal
    Feb 2005
    Messaggi
    320
    dunque, tu per "trasformarla" in itemtemplate intendi questo??

    <aspataGrid ID="dgr_dettaglio_carrello" ShowFooter="true" CssClass="style_carrello_datagrid" CellPadding="6" DataKeyField="id" AutoGenerateColumns="false" Width="100%" runat="server">
    <ItemStyle CssClass="style_carrello_datagrid" />
    <Columns>
    <asp:TemplateColumn HeaderText="Quantità" >
    <ItemStyle CssClass="style_carrello_datagrid" />
    <FooterStyle CssClass="style_carrello_datagrid" />
    <HeaderStyle CssClass="style_carrello_datagrid" />
    <ItemTemplate>
    <asp:TextBox runat="server" id="quantita" MaxLength="2" Columns="2" Text='<%# Container.DataItem("quantita") %>' ToolTip="Inserisci quantità desiderata" />
    <asp:ImageButton runat="server" CommandName="imgbtn_aggiorna_quantita" ImageAlign="AbsMiddle" ImageUrl="~/Controls/Image_Controls/oggetti_icn_refresh.png" ToolTip="Clicca per aggiornare quantità" />
    <asp:ImageButton CommandName="imgbtn_elimina_prodotto" runat="server" ImageUrl="~/Controls/Image_Controls/crocetta_rossa.png" BorderWidth="0" ImageAlign="AbsMiddle" ToolTip="Clicca per rimuovere il prodotto dal carrello" />
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="Articolo" >
    <ItemStyle CssClass="style_carrello_datagrid" />
    <FooterStyle CssClass="style_carrello_datagrid" />
    <HeaderStyle CssClass="style_carrello_datagrid" />
    <ItemTemplate>
    <%# Container.DataItem("titolo") %>
    <asp:PlaceHolder ID="ph_spedizione" runat="server" />
    </ItemTemplate>
    <FooterStyle VerticalAlign="Top" />
    <FooterTemplate>
    Spedizione: <aspropDownList runat="server" ID="drd_spedizione" OnLoad="Inizializza_Drd_Spedizione" OnSelectedIndexChanged="Seleziona_Spedizione" />




    </FooterTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="Prezzo unitario" >
    <ItemStyle CssClass="style_carrello_datagrid" />
    <FooterStyle CssClass="style_carrello_datagrid" />
    <HeaderStyle CssClass="style_carrello_datagrid" />
    <ItemTemplate>
    <asp:Label runat="server" id="prezzo_unitario" Text='<%# Container.DataItem("prezzo_unitario") %>' />
    </ItemTemplate>
    <FooterStyle VerticalAlign="Middle" />
    <FooterTemplate>




    Totale:

    </FooterTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="Totale" >
    <ItemStyle CssClass="style_carrello_datagrid" />
    <FooterStyle CssClass="style_carrello_datagrid" />
    <HeaderStyle CssClass="style_carrello_datagrid" />
    <ItemTemplate>
    <asp:Label runat="server" id="prezzo_totale" Text='<%# Container.DataItem("prezzo_totale") %>' />
    </ItemTemplate>
    <FooterStyle VerticalAlign="Middle" Height="40" />
    <FooterTemplate>
    <%=FormatCurrency(costo_spedizione)%>
    <br/ >


    <%=FormatCurrency(totale)%>

    </FooterTemplate>
    </asp:TemplateColumn>
    </Columns>
    </aspataGrid>



    perchè se intendio questo è già ciò che avevo fatto in precendenza, ma in questo modo se aggiungo una dropdownlist all'interno dell'itemtemplate di una colonna, la combo verrà inserita in tutte le righe del datagrid.

    per quanto riguarda il footer ho già inserito la combo, ma non ho creato delle vere e proprie "righe". Conosci un metodo per suddividere il footer in righe???

  10. #10
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580
    Originariamente inviato da Vailfox
    dunque, tu per "trasformarla" in itemtemplate intendi questo??

    <aspataGrid ID="dgr_dettaglio_carrello" ShowFooter="true" CssClass="style_carrello_datagrid" CellPadding="6" DataKeyField="id" AutoGenerateColumns="false" Width="100%" runat="server">
    <ItemStyle CssClass="style_carrello_datagrid" />
    <Columns>
    <asp:TemplateColumn HeaderText="Quantità" >
    <ItemStyle CssClass="style_carrello_datagrid" />
    <FooterStyle CssClass="style_carrello_datagrid" />
    <HeaderStyle CssClass="style_carrello_datagrid" />
    <ItemTemplate>
    <asp:TextBox runat="server" id="quantita" MaxLength="2" Columns="2" Text='<%# Container.DataItem("quantita") %>' ToolTip="Inserisci quantità desiderata" />
    <asp:ImageButton runat="server" CommandName="imgbtn_aggiorna_quantita" ImageAlign="AbsMiddle" ImageUrl="~/Controls/Image_Controls/oggetti_icn_refresh.png" ToolTip="Clicca per aggiornare quantità" />
    <asp:ImageButton CommandName="imgbtn_elimina_prodotto" runat="server" ImageUrl="~/Controls/Image_Controls/crocetta_rossa.png" BorderWidth="0" ImageAlign="AbsMiddle" ToolTip="Clicca per rimuovere il prodotto dal carrello" />
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="Articolo" >
    <ItemStyle CssClass="style_carrello_datagrid" />
    <FooterStyle CssClass="style_carrello_datagrid" />
    <HeaderStyle CssClass="style_carrello_datagrid" />
    <ItemTemplate>
    <%# Container.DataItem("titolo") %>
    <asp:PlaceHolder ID="ph_spedizione" runat="server" />
    </ItemTemplate>
    <FooterStyle VerticalAlign="Top" />
    <FooterTemplate>
    Spedizione: <aspropDownList runat="server" ID="drd_spedizione" OnLoad="Inizializza_Drd_Spedizione" OnSelectedIndexChanged="Seleziona_Spedizione" />




    </FooterTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="Prezzo unitario" >
    <ItemStyle CssClass="style_carrello_datagrid" />
    <FooterStyle CssClass="style_carrello_datagrid" />
    <HeaderStyle CssClass="style_carrello_datagrid" />
    <ItemTemplate>
    <asp:Label runat="server" id="prezzo_unitario" Text='<%# Container.DataItem("prezzo_unitario") %>' />
    </ItemTemplate>
    <FooterStyle VerticalAlign="Middle" />
    <FooterTemplate>




    Totale:

    </FooterTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="Totale" >
    <ItemStyle CssClass="style_carrello_datagrid" />
    <FooterStyle CssClass="style_carrello_datagrid" />
    <HeaderStyle CssClass="style_carrello_datagrid" />
    <ItemTemplate>
    <asp:Label runat="server" id="prezzo_totale" Text='<%# Container.DataItem("prezzo_totale") %>' />
    </ItemTemplate>
    <FooterStyle VerticalAlign="Middle" Height="40" />
    <FooterTemplate>
    <%=FormatCurrency(costo_spedizione)%>
    <br/ >


    <%=FormatCurrency(totale)%>

    </FooterTemplate>
    </asp:TemplateColumn>
    </Columns>
    </aspataGrid>



    perchè se intendio questo è già ciò che avevo fatto in precendenza, ma in questo modo se aggiungo una dropdownlist all'interno dell'itemtemplate di una colonna, la combo verrà inserita in tutte le righe del datagrid.

    per quanto riguarda il footer ho già inserito la combo, ma non ho creato delle vere e proprie "righe". Conosci un metodo per suddividere il footer in righe???
    non si puo aggiungere altri footer, ma solo uno
    potresti comunque metterci una tabella al footer di 2 righe
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

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.