Detailsview e posizionamento campi

giovedì 22 ottobre 2009 - 10.26

dosa85 Profilo | Junior Member

Ho un Detailsview che prende i dati da un Accessdatasource collegato a un db di access 2000.

I campi sono 3: Data -Titolo - Descrizione - Immagine

Ora, i campi come da norma del controllo, vendogno posizionati uno sotto l'altro, io pero vorrei posizionare i campi a mio piacimento sulla pagina, tipo, Data Titolo e Descrizione uno sotto l'altro, mentre il campo Immagine, sulla destra degli alòtri 3 campi in modo da avere una cosa un poco piu carina.

Mi aiutate per favore?

alx_81 Profilo | Guru

>Ora, i campi come da norma del controllo, vendogno posizionati
>uno sotto l'altro, io pero vorrei posizionare i campi a mio piacimento
>sulla pagina, tipo, Data Titolo e Descrizione uno sotto l'altro,
>mentre il campo Immagine, sulla destra degli alòtri 3 campi in
>modo da avere una cosa un poco piu carina.
>Mi aiutate per favore?
devi usare un TemplateField. Guarda questo tutorial:
http://www.asp.net/LEARN/data-access/tutorial-13-cs.aspx

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

dosa85 Profilo | Junior Member

mmm...questo esempio è molto interessante, pero ho riscontrato un problema. Il mio campo immagine, prende l'immagine dal nome indicato nel campo del database, quindi non posso fare in questo modo......
guarda il codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Cioè, il mio campo immagine del detailsview prende l'immagine, che si trova nella cartella IMG del sito, che ha il nome descritto nel campo immagine del database.

Gluck74 Profilo | Guru

scusa, non ho capito il problema che hai con l'immagine

martinez Profilo | Senior Member

ciao!

credo che il tuo problema è relativo al fatto che non usi i TemplateField ....

ti allego un TemplateField molto banale ... per le immagini

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Fammi sapere

Antonio

dosa85 Profilo | Junior Member

Grazie, capito

un'ultima cosa, mi dici a cosa serve: '???

uso VB

e comunque non riesco a mettere ancora, sto benedetto campo immagine sulla destra, per forza in pila devo metterli tutti e tre?????


HELPPPPPPPPPPPP PLZ

grazie, guaRDA l'immagine sottostante


<a href="http://img62.imageshack.us/i/asfs.jpg/" target="_blank"><img src="http://img62.imageshack.us/img62/3253/asfs.th.jpg" border="0" alt="Free Image Hosting at www.ImageShack.us" /></a><br /><br /><a href="http://img604.imageshack.us/content.php?page=blogpost&files=img62/3253/asfs.jpg" title="QuickPost"><img src="http://imageshack.us/img/butansn.png" alt="QuickPost" border="0"></a> Quickpost this image to Myspace, Digg, Facebook, and others!

Gluck74 Profilo | Guru

la sequenza &#039 equivale al carattere "

per quanto riguarda la visualizzazione, dovresti guardare il codice HTML generato per capire meglio la situazione:
il controllo DetailView, di default genera una tabella per visualizzare tutti i campi.
Per modificare ciò dovresti fare l'override del metodo Render, e ridisegnare i controlli come meglio preferisci, ad esempio dentro dei div o degli span.

ciao ciao

dosa85 Profilo | Junior Member

mmmm......... quindi dovrei "ridisegnare il controllo"
perdonami ma sn nuovo all'uso di asp.net.

Il mio codice della pagina aspx è questo:

__________________________________________________________________________________________________________________________
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="store.aspx.vb" Inherits="store" title="Store - DoSa.NET Soluzioni informatiche" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

<div>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/mdb-database/dati.mdb" SelectCommand="SELECT * FROM [store] ORDER BY [data] DESC"></asp:AccessDataSource>

<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="266px" AllowPaging="True" AutoGenerateRows="False" DataKeyNames="ID" DataSourceID="AccessDataSource1" BorderStyle="None" CellPadding="3" CellSpacing="2" GridLines="None">

<Fields>
<asp:BoundField DataField="titolo" SortExpression="titolo" HtmlEncode="False" >
</asp:BoundField>
<asp:BoundField DataField="descrizione" SortExpression="descrizione" HtmlEncode="False">
<ItemStyle Font-Size="11pt" Height="10px" />
</asp:BoundField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label id="Label3" runat="server" Text='<%# Bind("immagine","<img src=img/{0}/>") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Fields>

<RowStyle HorizontalAlign="Left" />
</asp:DetailsView>

</div>

</asp:Content>
_______________________________________________________________________________________________________________________

se hai tempo, puoi farmi capire meglio? o magari indirizzarmi a qualche guida per capire.....Grazie mille!

martinez Profilo | Senior Member

Ciao

hai già la soluzione !!!

utilizzi un campo TemplateField che includa le indicazioni di campo2 e campo3 e serviti di codice HTML e CSS per posizionarli nel layout ... ad esempio con due <Div> e l'opzione float ....

Antonio

dosa85 Profilo | Junior Member

ho capito. Naturalmente posso mettere in un div solamente il campo template, gli altri non riesco.

Cmq, guarda il codice così come ho fatto ora:

_______________________________________________________________
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="store.aspx.vb" Inherits="store" title="Store - DoSa.NET Soluzioni informatiche" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

<div>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/mdb-database/dati.mdb" SelectCommand="SELECT * FROM [store] ORDER BY [data] DESC"></asp:AccessDataSource>

<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="603px" AllowPaging="True" AutoGenerateRows="False" DataKeyNames="ID" DataSourceID="AccessDataSource1" BorderStyle="None" CellPadding="3" CellSpacing="2" GridLines="None">
<Fields>

<asp:BoundField DataField="titolo" SortExpression="titolo" HtmlEncode="False" ><ItemStyle HorizontalAlign=left/></asp:BoundField>


<asp:TemplateField>
<ItemTemplate>
<div style="width: auto; height: auto; float: right;" id="div_img">
<asp:Label id="Label3" runat="server" Text='<%# Bind("immagine","<img src=img/{0}/>") %>'></asp:Label></div>
</ItemTemplate>
</asp:TemplateField>


<asp:BoundField DataField="descrizione" SortExpression="descrizione" HtmlEncode="False"><ControlStyle Width="100px" /><ItemStyle Font-Size="11pt" Height="10px" /></asp:BoundField>


</Fields>

<RowStyle HorizontalAlign="Left" />
</asp:DetailsView>

</div>


</asp:Content>
_____________________________________________________________________

Ho messo il campo template fra gli altri 2 campi. E comunque, potresti spiegarmi in 2 parole come mettere 2div in orizzontale uno affiancato all'altro? non riesco. Scusami, lo so che secco....! grazie

Gluck74 Profilo | Guru

considera che il DetailsView ti crea comunque una tabella con una riga per ogni colonna dati che hai nell'elenco Fields.
qindi ti genera comunque un <td> con il nome del campo esempio:

<td>nome campo</td><td>contollo bound o template che hai scelto</td>


per generare invece del codice completamente custom, ovvero non generi la tabella ma qualsiasi cosa ti serve, devi utilizzare il FormView.
http://msdn.microsoft.com/en-us/library/bb332381.aspx#aspnett16ovwincs_topic9

martinez Profilo | Senior Member

Ciao

praticamente devi modellare il tuo ItemTempplate a piacere in questo modo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

questo è solo un esempio per farti capire meglio il concetto ... tu utilizza il layout che meglio credi ...

ed anch'io suggerisco il FormView più specifico per l'uso che richiedi!

Antonio
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5