Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: edit datagrid

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    573

    edit datagrid

    non ho per nulla le idee chiare!... pur avendo guardato degli esempi...

    Dunque ecco il mio datagrid:
    <aspataGrid id="dgNews" runat="server" BorderWidth="1px" OnSortCommand="Filtra" AutoGenerateColumns="False"
    AllowSorting="True" AllowPaging="True" CellPadding="2" OnPageIndexChanged="saltapagina" AllowCustomPaging="True"
    PageSize="5" Width="603px" BorderColor="#00445F" OnEditCommand="dgNews_Edit" OnCancelCommand="dgNews_Cancel"
    OnUpdateCommand="dgNews_Update">
    <FooterStyle cssclass="t11"></FooterStyle>
    <HeaderStyle cssclass="t11"></HeaderStyle>
    <ItemStyle cssclass="t11"></ItemStyle>
    <PagerStyle nextpagetext="Pagina successiva" prevpagetext="Pagina precedente"></PagerStyle>
    <Columns>
    <asp:TemplateColumn SortExpression="Data" HeaderText="Data" ItemStyle-Width="75px">
    <ItemTemplate>
    <%#left(Container.DataItem("data"),10)%>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:textbox id="tbData" runat=server Text='<%#left(Container.DataItem("data"),10)%>' width=75/>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn SortExpression="Titolo" HeaderText="Titolo" ItemStyle-Width="100px">
    <ItemTemplate>
    <%#Container.DataItem("Titolo")%>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:textbox id="tbTitolo" runat=server Text='<%#Container.DataItem("Titolo")%>' Rows="3" TextMode="MultiLine" width=100/>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn SortExpression="Descrizione" HeaderText="Descrizione" ItemStyle-Width="153px">
    <ItemTemplate>
    <%#Container.DataItem("Descrizione")%>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:textbox id="tbDescrizione" runat=server Text='<%#Container.DataItem("Descrizione")%>' Rows="3" TextMode="MultiLine" width=153/>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn SortExpression="Link" HeaderText="Link" ItemStyle-Width="100px">
    <ItemTemplate>
    <%#Container.DataItem("Link")%>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:textbox id="tbLink" runat=server Text='<%#Container.DataItem("Link")%>' width=100/>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn SortExpression="Foto" HeaderText="Foto" ItemStyle-Width="75px">
    <ItemTemplate>
    <%#Container.DataItem("Foto")%>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:textbox id="tbFoto" runat=server Text='<%#Container.DataItem("Foto")%>' width=75/>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn SortExpression="Categoria" HeaderText="Categoria" ItemStyle-Width="100px">
    <ItemTemplate>
    <%#Container.DataItem("Categoria")%>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:ListBox id="lbCat" runat="server" Width="100px" Rows="1" DataTextField="Categoria" DataValueField="IdCat" AutoPostBack="false"/>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn SortExpression="Visibile" HeaderText="Visibile" ItemStyle-Width="100px">
    <ItemTemplate>
    <asp:CheckBox id="Visibile" runat="server" Enabled="False" Checked='<%#Container.DataItem("Visibile")%>'/>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:CheckBox id="cbVisibile" runat="server" Checked='<%#Container.DataItem("Visibile")%>'/>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:EditCommandColumn EditText="clicca qui" CancelText="Cancel" UpdateText="Update" HeaderText="Edit" />
    </Columns>
    </aspataGrid>
    nel codebehind la binddata che mi popola il datagrid:
    Sub BindData(Optional ByVal EditIndex As Integer = -1)

    Dim DSN As String = System.Configuration.ConfigurationSettings.AppSett ings("connessione")
    Dim Conn As OleDbConnection
    Conn = New OleDbConnection(DSN)

    Conn.Open()

    Dim sql As String = "SELECT * FROM News_Cat INNER JOIN News ON News_Cat.IdCat = News.IdCat Order by Data desc"
    Dim CmdNews As New OleDbCommand(sql, Conn)
    Dim RNews As OleDbDataReader
    RNews = CmdNews.ExecuteReader
    dgNews.DataSource = RNews
    If Not EditIndex.Equals(Nothing) Then
    dgNews.EditItemIndex = EditIndex
    End If
    dgNews.DataBind()
    Conn.Close()

    Conn.Close()

    End Sub
    poi mi perdo... come faccio nella modalità edit, ad esempio a popolare la listbox con le categorie della tabella t_Categorie (IdCat, Categoria)?... e poi vabbè un po' tutto il meccanismo è poco chiaro... cmq andiamo per gradi, prima visualizziamo in modalità modifica tutti i dati al posto giusto! Che già è tanto!

    Ho scritto:
    Sub dgNews_Edit(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
    BindData(e.Item.ItemIndex)
    End Sub
    ma non so come iviare i dati alla listbox...

    un aiutino, grazie Elisa

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    573
    Primo problema. Ho preso quest'esempio http://www.4guysfromrolla.com/webtech/050801-1.shtml dal sito che mi hai consigliato.
    A parte il fatto che preferirei evitare di lavorare in modalità disconnessa ma anche seguendo l'esempio mi da già un problema.

    Nella pagina
    <aspropDownList id=ddCategoria runat="server" datavaluefield="IdCat" datatextfield="Categoria" DataSource="<%#DropDownDataView%>" />

    Nel codebehind:
    Protected TempDataView As DataView = New DataView
    .........
    Protected Sub PopulateDropDownList()

    Dim DSN As String = System.Configuration.ConfigurationSettings.AppSett ings("connessione")
    Dim Conn As OleDbConnection
    Conn = New OleDbConnection(DSN)
    Conn.Open()ds.Tables("Categorie")

    Dim sqlCat = "SELECT * From News_Cat"
    Dim cmdCat As New OleDbDataAdapter(sqlCat, Conn)
    Dim ds As DataSet = New DataSet
    cmdCat.Fill(ds, "Categorie")

    TempDataView = ds.Tables("Categorie")

    End Sub


    e qui su ds.Tables("Categorie") mi dice impossibile convertire il tipo System.Data.Datateble in System.Data.DataView

  4. #4
    Originariamente inviato da elisa_rm74
    A parte il fatto che preferirei evitare di lavorare in modalità disconnessa

    ...mi dice impossibile convertire il tipo System.Data.Datateble in System.Data.DataView
    E fa bene a dirtelo. Una datatable non e' la stessa cosa di una dataview. Quindi se cerchi di mettere una datatable in un oggetto di tipo dataview il compilatore si lamenta (non dirmi che l'avevi trovato nell'esempio che non ci credo ).
    Per risolvere il problema nel tuo codice con... poco codice, puoi modificare cosi
    codice:
    TempDataView = ds.Tables("Categorie").defaultview
    Saluti a tutti
    Riccardo

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    573
    grazie per ora va bene... tanto tra poco torno alla carica!

    Cmq si, è nell'esempio.... chiedo venia ma non non ho mai lavorato né con un datagrid in modalità edit e né tantomeno con un web control dentro un datagrid

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    573
    impossibile ma vero... le categorie si vedono!!! eheheh adesso viene il bello per modifica e cancellazione!!!

    Ma prima di procedere una domanda. A parte che sinceramente ci sono svariati lati oscuri per ma volendo popolare la dropdownlist con un datareader come si fa? e si può sempre usare il dataview?

    Scusate le domandacce che faccio!

  7. #7
    Originariamente inviato da elisa_rm74
    Cmq si, è nell'esempio.... chiedo venia
    ma no, scusa tu. Per curiosita' ho sbirciato nell'esempio e in effetti c'e' questo errore grossolano.
    Saluti a tutti
    Riccardo

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    573
    Figurati che bella accoppiata! un esempio con gli errori e io che non ne so nulla!

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    573
    no aiuto mi sono incastrata un'altra volta!!!

    Con tutte le premesse del codice postato precedentemente, per fare l'aggiornamento dei dati ho scritto:

    Sub dgNews_Edit(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
    PopulateDropDownList()
    BindData(e.Item.ItemIndex)
    End Sub
    Sub dgNews_Update(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
    If UpdateNews(e) Then
    BindData(-1)
    End If
    End Sub

    UpdateNews dovrebbe essere una funzione che mi prende i campi e mi aggiorna il db... dovrebbe

    Visto che ho mischiate textbox con la famosa dropdownn e una ceckbox... come faccio?

    Ho provato a scrivere nella funzione:
    Dim ltest As Label
    ltest.Text = CType(e.Item.FindControl("tbTitolo"), TextBox).Text()

    ma mi dice System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto

    Lo so che vi sto stressando


    Dentro

  10. #10
    Originariamente inviato da elisa_rm74
    Ho provato a scrivere nella funzione:
    Dim ltest As Label
    ltest.Text = ...
    prova con
    codice:
    Dim ltest As New Label
    Saluti a tutti
    Riccardo

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 © 2026 vBulletin Solutions, Inc. All rights reserved.