[ dado49 @ 04.03.2007. 13:20 ] @
Pokusavam da ubacim neke slike u datagrid. Slike su smjestene na c: drev-u.

Ovdje se kod koji koristim:

protected void getPictures()
{
DataTable dt = new DataTable("123");
dt.Columns.Add("abc", typeof(string));

string[] fileEntries = System.IO.Directory.GetFiles(Server.MapPath("./AlbumPictures/Ski/"));
int i;
for (i = 0; i <= fileEntries.Length - 1; i++)
{
DataRow dr = dt.NewRow();
string pic = fileEntries.GetValue(i).ToString().Replace(@"\", @"/");

dr["abc"] = "<img src=" + (char)34 + "" + pic + "" + (char)34 + " height=274 width=274>";


dt.Rows.Add(dr);
}

GridView1.DataSource = dt.DefaultView;
GridView1.DataBind();

}

Ovdje je rezultat:
ne razumijem zasto ne pokaziva sliku. kada ovaj kod ubacim u frontpage radi sve ok i slike se pojave.
abc
<img src="C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/WebSites/test.net/AlbumPictures/Ski/DSC00390.JPG" height=274 width=274>
<img src="C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/WebSites/test.net/AlbumPictures/Ski/DSC00391.JPG" height=274 width=274>
<img src="C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/WebSites/test.net/AlbumPictures/Ski/DSC00393.JPG" height=274 width=274>
<img src="C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/WebSites/test.net/AlbumPictures/Ski/DSC00394.JPG" height=274 width=274>
[ IDeveloper @ 04.03.2007. 22:40 ] @
Problem je u tome što ti u tabeli držiš samo putanju do slike, kao string, ali ne i samu sliku. Ne znam koliko si upućen u ADO?! Sliku kao i svaki fajl možeš da čuvaš kao niz byte-ova u tabeli!
Pozdav!

[Ovu poruku je menjao mmwc dana 15.03.2007. u 09:33 GMT+1]
[ IDeveloper @ 04.03.2007. 23:07 ] @
....Naravo, to se odnosi na slučaj ako želiš da ti tabela bude DataSource!

[Ovu poruku je menjao mmwc dana 15.03.2007. u 09:35 GMT+1]
[ dusans @ 05.03.2007. 00:05 ] @
Pretpostavljam da ti je putanja do slika dobra ali da grid pri rendanju odradi HTML enkodiranje putanje pa ne dobijes ono sto treba da dobijes.
Desni klik u browser-u - View Source, pa malo proanaliziraj HTML koji si dobio.

Pozdrav!



[ IDeveloper @ 05.03.2007. 09:51 ] @
Sada sam uhvatio malo vremena, pa da ne bude neosnovana moja priča evo i primera....
(Ja razvijam desktop aplikacije, pa sam kao kontrolu koristio DataGridView a kao kontejner klasicnu windows formu)
Code:

 private void Form1_Load(object sender, EventArgs e)
       {
           DataTable dt = new DataTable();
           dt.Columns.Add("abc", typeof(System.Byte[]));
           DataRow dr;
           dr = dt.NewRow();
           dr["abc"] = GetImageFromURL("C:\\burning-cds.jpg");
           dt.Rows.Add(dr);

           dataGridView1.DataSource = dt;

       }


       //Metod koji ucitava sliku sa diska i vraca je kao niz byte-ova
       private byte[] GetImageFromURL(string fileName)
       {

           System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);

           System.IO.BinaryReader br = new System.IO.BinaryReader(fs);

           return (br.ReadBytes(Convert.ToInt32(br.BaseStream.Length)));

       }


Grid je prazan, a kao što vidiš punim ga u loadu forme

[Ovu poruku je menjao mmwc dana 15.03.2007. u 09:35 GMT+1]
[ dusans @ 05.03.2007. 12:23 ] @
Ma ok je to za windows sto pišes IDeveloper, samo koliko ja vidim čoveku treba za Web a ne za Windows, on čovek pravi web album slika sa skijanja :)
[ IDeveloper @ 05.03.2007. 13:00 ] @
Skapirao sam ja to! Nego sam naveo samo primer, kako to ja radim sa desktop aplikacijama(zbog toga sam to i naznačio), analogija je ista, čisto da ima primer kako to može da uradi ako želi da mu datasource bude datatable u projektu!
Pozdrav!

[Ovu poruku je menjao mmwc dana 15.03.2007. u 09:36 GMT+1]
[ dado49 @ 06.03.2007. 19:28 ] @
Puno hvala na vrlo dobrim odgovrima :)

Kao sto Dusan kaze meni ne treba iz DB. Ali u svakom slucaju hvala.

Ovako izgleda kod u HTML-u:

<table cellspacing="0" rules="all" border="1" id="ctl00_phMain_GridView1" style="border-collapse:collapse;">
<tr>
<th scope="col">&nbsp;</th><th scope="col">abc</th>
</tr><tr>
<td></td><td>&lt;img height=&quot;100&quot; src=&quot;C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/WebSites/test/AlbumPictures/Ski/DSC00390.JPG&quot;/&gt;</td>

</tr><tr>
<td></td><td>&lt;img height=&quot;100&quot; src=&quot;C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/WebSites/testAlbumPictures/Ski/DSC00391.JPG&quot;/&gt;</td>
</tr><tr>
<td></td><td>&lt;img height=&quot;100&quot; src=&quot;C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/WebSites/test/AlbumPictures/Ski/DSC00393.JPG&quot;/&gt;</td>

</tr><tr>
<td></td><td>&lt;img height=&quot;100&quot; src=&quot;C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/WebSites/test/AlbumPictures/Ski/DSC00394.JPG&quot;/&gt;</td>
</tr>
</table>


[ dusans @ 06.03.2007. 21:06 ] @
Umesto dosadasnje BoundField kolone koja ti je sluzila za prikaz slika napravi jednu TemplateField kolonu sa jednim span-om unutar item templejta te kolone tako da dobijes izmedju ostalog i sledeci kod u source-u grida na stranici:

Code:

   <asp:TemplateField>
      <ItemTemplate>
         <span id="imagespan" runat="server">
         </span>
      </ItemTemplate>
   </asp:TemplateField>


Dodaj handler za RowDataBound tvog GridView-a na sledecu funkciju:
Code:

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowIndex >= 0)
        {
            (e.Row.FindControl("imagespan") as HtmlGenericControl).InnerHtml = ((DataRowView)e.Row.DataItem)["abc"].ToString();
        }
    }


I gledaj da ti url-ovi za slike ne budu fizicke putanje vec relativne u odnosu na root site-a (dobra praksa), znaci valjalo bi da se oslobodis onog C:/Documents and Settings/Administrator/My... ako mozes...

Pozdrav!
[ dado49 @ 08.03.2007. 21:12 ] @
Hvala na odgovoru.
Nisam bas neki ekspert sa datagrid ako mozes malo pojasniti kako da sve to napravim.

Recimo napravim jednu imagetemplate colum (nisam bas siguran da je ovo ok)
Code:

        <asp:GridView ID="GridView1" runat="server" >
            <Columns>
                <asp:ImageField DataImageUrlField="imagefile">  
                </asp:ImageField>
            </Columns>
            
         </asp:GridView>


kako sada u kodu da ubacim slike u ovu colum?
ovako dobijem slike?
Code:

        string[] fileEntries = System.IO.Directory.GetFiles(Server.MapPath("./AlbumPictures/Ski/"));
        int i;
        dim pic = "";
        for (i = 0; i <= fileEntries.Length - 1; i++)
        {
             pic = fileEntries.GetValue(i).ToString().Replace(@"\", @"/");
    
        }
[ dado49 @ 29.04.2007. 14:41 ] @
Pokusao sam na ovaj nacin ali mi necece nikako da prikaze slike.
dali neko vidi o cemu se rdi? Gdje sam pogrijesio.




GridView
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<span id="imagespan" runat="server">
</span>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>




codebehaind
protected void test()
{
DataTable datat = new DataTable();
DataRow datar;
datat.Columns.Add("1", typeof(string));

string[] allfiles = System.IO.Directory.GetFiles(Server.MapPath(@"~\Test\aa\"));

for (int i = 0; i <= allfiles.Length - 1; i++)
{
FileInfo finfo1 = new System.IO.FileInfo(allfiles);
datar = datat.NewRow();
datar["1"] = " <a href= " + " index.aspx " + "> <img src='" + finfo1.FullName + "' /> </a>";

datat.Rows.Add(datar);
}
GridView1.DataSource = datat.DefaultView;
GridView1.DataBind();
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex >= 0)
{
(e.Row.FindControl("imagespan") as HtmlGenericControl).InnerHtml = ((DataRowView)e.Row.DataItem)["1"].ToString();
}
}




HTML
ne razumijem zasto ne pokaziva slike?
<table cellspacing="0" rules="all" border="1" id="ctl00_phMain_GridView1" style="border-collapse:collapse;">
<tr>

<th scope="col">&nbsp;</th>
</tr><tr>
<td>
<span id="ctl00_phMain_GridView1_ctl02_imagespan">
</span>
</td>
</tr><tr>
<td>
<span id="ctl00_phMain_GridView1_ctl03_imagespan">

</span>
</td>
</tr><tr>
<td>
<span id="ctl00_phMain_GridView1_ctl04_imagespan">
</span>
</td>
</tr><tr>
<td>

<span id="ctl00_phMain_GridView1_ctl05_imagespan">
</span>
</td>
</tr><tr>
<td>
<span id="ctl00_phMain_GridView1_ctl06_imagespan">
</span>
</td>
</tr>

</table>