+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 6 su 6

Discussione: ASP.NET DataView e database vuoto

  1. #1
    L'avatar di Jedi-78
    Jedi-78 non è in linea Novello
    Post
    32

    ASP.NET DataView e database vuoto

    La domanda è semplice ed elementare.

    Ho un database che contiene le news

    composto da campi essenziali:

    ID
    DataEvento (che servirà a mostrare, se inserito, il giorno dell'evento)
    DataValidita (che indicherà fino a quando questa notizia deve figurare tra le news attive)
    New (la new vera e propria)

    Ho messo in una pagina a cui solo la classe administrator arriva una DetailView per vederle e modificarle.

    Cosa devo settare affinché, anche col database vuoto, mi compaia 'Nuovo'?
    No. Try not. Do. Or do NOT! There's no TRY! (Master Yoda)

  2. #2
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    Ciao Jedi
    un consiglio:
    1)posta sempre il markup che stai usando
    2)in questo caso indica se stai usando un oggetto SqlDataSource per popolare il controllo, una tua classe ecc
    3)posta sempre il code behind della pagina (ovviamente solo le porzioni che interessano il problema in esame)

    Ad ogni modo, premesso, che non ho avuto modo di effettuare dei test a tal proposito, mi viene in mente che per esempio nel caso di zero righe puoi settare il DefaultView del controllo in modalità di insert.
    Quindi supponendo che il markup sia:
    codice:
    <asp:DetailsView ID="dv" runat="server" Width="200px" ondatabound="dv_DataBound" AutoGenerateRows="false" AutoGenerateInsertButton="true" >
      <Fields>
        <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" InsertVisible="False" />
        <asp:BoundField DataField="name" HeaderText="Name" />
        <asp:BoundField DataField="Desc" HeaderText="Desc" />
      </Fields>
    </asp:DetailsView>
    nell'evento DataBound del controllo verificare quanto segue:
    codice:
    protected void dv_DataBound(object sender, EventArgs e)
    {
      if (dv.DataItemCount == 0)
        dv.ChangeMode(DetailsViewMode.Insert);
    }
    Oppure si potrebbe agire nell'EmptyDataTemplate inserendo un controllo button con CommandName uguale a new e come property Text uguale a New (per simulare un pulsante di creazione nuovo record).
    Nell'evento ModeChanging (del controllo dv) vai a modificare la modalità come visto in precedenza (in insert).
    Lascio a te il compito di implementazione di quest'ultima strada.
    Ultima modifica di SignIn; 24-03-2009 21:34 

  3. #3
    L'avatar di Jedi-78
    Jedi-78 non è in linea Novello
    Post
    32
    Grazie SignIn...

    Allora... vediamo di mettere in ordine...

    il markup è SqlDataSource

    Qui è il codice dell'aspx relativo al DetailsView

    <asp: DetailsView ID="DetailsView1" runat="server" AllowPaging="True"
    AutoGenerateRows="False" DataKeyNames="ID" DataSourceID="sqlPTLNews"
    Height="190px" Width="275px" AutoGenerateDeleteButton="True"
    AutoGenerateEditButton="True" AutoGenerateInsertButton="True"
    BorderStyle="None">
    <Fields>
    <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True"
    SortExpression="ID" Visible="False" />
    <asp:BoundField ApplyFormatInEditMode="True" DataField="DataEvento"
    DataFormatString="{0:d}" HeaderText="DataEvento" SortExpression="DataEvento" />
    <asp:BoundField ApplyFormatInEditMode="True" DataField="DataValidita"
    DataFormatString="{0:d}" HeaderText="DataValidita"
    SortExpression="DataValidita" />
    <asp:BoundField DataField="New" HeaderText="New" SortExpression="New" />
    </Fields>
    <AlternatingRowStyle BackColor="White" />
    </asp: DetailsView>

    E qui il codebehind (in VB.NET)

    Partial Class news_ModifyNews
    Inherits System.Web.UI.Page

    Protected Sub DetailsView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewPageEventArgs ) Handles DetailsView1.PageIndexChanging

    End Sub
    End Class

    Scusa ancora... come ho detto sono newbie un po' in tutto.

    La prossima volta mi ricorderò di scrivere ogni cosa
    No. Try not. Do. Or do NOT! There's no TRY! (Master Yoda)

  4. #4
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    Hai avuto modo di testare una delle due strade che ti ho indicato?

  5. #5
    L'avatar di Jedi-78
    Jedi-78 non è in linea Novello
    Post
    32
    ho testato la prima, dopo aver convertito il codice in VB.NET.

    Tutto a posto, grazie dell'aiuto
    No. Try not. Do. Or do NOT! There's no TRY! (Master Yoda)

  6. #6
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    Quote Originariamente inviato da Jedi-78 Visualizza il messaggio
    Tutto a posto, grazie dell'aiuto
    .....prego

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi