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

    riferirsi una dropdownlist che si trova dentro un datagrid

    IL mio problema è il seguente:
    mi sono costruito il seguente datagrid

    <ASPataGrid id="MyDataGrid" runat="server"
    Width="100%"
    BackColor="Gainsboro"
    BorderColor="black"
    ShowFooter="false"
    CellPadding=3
    CellSpacing="0"
    Font-Name="Verdana"
    Font-Size="8pt"
    HeaderStyle-BackColor="LightSteelBlue"
    HeaderStyle-Font-Bold="true"
    HeaderStyle-Font-Size="10"
    OnEditCommand="MyDataGrid_Edit"
    OnCancelCommand="MyDataGrid_Cancel"
    OnUpdateCommand="MyDataGrid_Update"
    OnDeleteCommand="MyDataGrid_Delete"
    DataKeyField="id_faq"
    AutoGenerateColumns="false"
    >
    <Columns>
    <ASP:EditCommandColumn EditText="Modifica" CancelText="Indietro" UpdateText="Aggiorna" ItemStyle-Wrap="false"/>

    <asp:BoundColumn HeaderText="id_faq" SortExpression="id_faq" ReadOnly="True" DataField="id_faq" ItemStyle-Wrap="false"/>

    <ASP:TemplateColumn Headertext=gruppo SortExpression=gruppo>
    <ItemTemplate>
    <ASP:Label Runat=server text='<%# databinder.eval(container.dataitem, "gruppo")%>' ID="Label12"></ASP:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <nobr>
    <aspropDownList Runat=server ID="edit_gruppo" DataValueField=gruppo DataTextField=gruppo/>
    </nobr>
    </EditItemTemplate>
    </ASP:TemplateColumn>

    <ASP:ButtonColumn Text="Cancella FAQ" CommandName="Delete"/>
    </Columns>
    </ASPataGrid>


    ho messo dunque una dropdownlist che vorrei poi caricare con le seguenti righe di codice

    Public Sub BindGrid()
    call connetti()
    Dim myCommand As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM bic_faq", myDSN)
    Dim ds As DataSet= New DataSet()
    myCommand.Fill(ds)
    MyDataGrid.DataSource = ds
    MyDataGrid.DataBind()


    Dim myCommand2 As SqlDataAdapter = New SqlDataAdapter("SELECT DISTINCT gruppo FROM bic_faq", myDSN)
    Dim ds2 As DataSet= New DataSet()
    myCommand2.Fill(ds2)

    edit_gruppo.datasource=ds2
    edit_gruppo.databind()
    End Sub

    solo che quando il codice esegue questa riga
    "edit_gruppo.datasource=ds2"
    mi da errore, e mi scrive
    "Nome 'edit_gruppo' non dichiarato"

    Se sposto la dropdownlist fuori dal datagrid però funziona perfettamente. Che devo fare???

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    1,482
    Il DropDownList devi popolarlo durante l'evento ItemDataBound del DataGird in questo modo:

    codice:
    Sub Dtg_ItemDataBound(Obj As Object, e As DataGridItemEventArgs)
    'Se il datagrid è in modalità edit altrimenti esci
    If Obj.EditItemIndex = - 1 then exit sub
    'Esci se la riga selezionata non è in modalità edit
    If Not E.Item.ItemIndex = DtlArticoli.EditItemIndex then exit sub
    'Estrai i dati
    Dim myCommand2 As SqlDataAdapter = New SqlDataAdapter("SELECT DISTINCT gruppo FROM bic_faq", myDSN) 
    Dim ds2 As DataSet= New DataSet() 
    myCommand2.Fill(ds2) 
    'carichi i dati nel ddl
    CType(E.Item.FindControl("Edit_gruppo"), DropDownList).datasource=ds2 
    CType(E.Item.FindControl("Edit_gruppo"), DropDownList).databind() 
    End Sub

    Hey hey, my my Rock and roll can never die!

  3. #3

    tks

    Grazie x la velocità della tua risposta e per avermi risolto il problema, ma ora ne ho un altro:

    come faccio a fare in modo che nella select creata appaia come selected il valore che è presente nel Database???

  4. #4
    Utente di HTML.it L'avatar di nicki
    Registrato dal
    Dec 2000
    Messaggi
    139
    Fai tutto nella funzione DatagridTua_ItemDataBound
    Agganci la dropdownlist con E.Item.FindControl("Edit_gruppo")
    Fai quello che devi fare nel database, ti pesci i dati, poi fai un ciclo sui valori del dropdownlist e se il valore é quello giusto poni dropdownlisttua.SelectedIndex=indice, ed il giuoco é fatto

    ciao
    Ciao, nic.

  5. #5
    Utente di HTML.it L'avatar di nicki
    Registrato dal
    Dec 2000
    Messaggi
    139
    magari i dati li peschi, non li pesci....
    Ciao, nic.

  6. #6
    Grazie nicki, però penso di non essere in grado di fare ciò che mi mi hai scritto:
    Potresti aiutarmi in maniera pratica???
    Questa è la sub a cui ti riferivi. Ho provato a fare il ciclo che mi dicevi, ma essendo ancora poco esperto di asp.net non ci sono riuscito.
    Potresti aiutarmi direttamente nel codice???
    Grazie...

    Sub Dtg_ItemDataBound(Obj As Object, e As DataGridItemEventArgs)
    'funzione chiamata tra i metodi del datagrid che popola la select gruppo
    'Se il datagrid è in modalità edit altrimenti esci
    If Obj.EditItemIndex = - 1 then exit sub

    'Esci se la riga selezionata non è in modalità edit
    If Not E.Item.ItemIndex = MyDataGrid.EditItemIndex then exit sub

    'Estrai i dati
    Dim myCommand2 As SqlDataAdapter = New SqlDataAdapter("SELECT DISTINCT gruppo FROM bic_faq", myDSN)
    Dim ds2 As DataSet= New DataSet()
    myCommand2.Fill(ds2)
    'carichi i dati nel ddl
    CType(E.Item.FindControl("Edit_gruppo"), DropDownList).datasource=ds2
    CType(E.Item.FindControl("Edit_gruppo"), DropDownList).databind()
    End Sub

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.