tomcattyy
asked on
convert code behind code to use TemplateField with c# and asp.net 2.0
Hello there,
I am new with asp.net
I create a page before mainly with Response.write from the code behind. Basically I create a table and fill in the dataReader field
In the new TemplateField front I just use the <%#Eval("dataFields")%> to display data. It went fine but I run into this problem. As you can see from the Code attached, originally I have a section check if the file exist then write the images into a <td> column.
I tried to convert it into
<div style="float: left;">
<% for (int i = 1;i< 20;i++){
string path = "E:\\CARETSDailypull5000\\ Photograph s\\" ;
path+= Eval("ListingKey")+"_"+i.T oString +".jpg";
if(File.Exists(path) {
Response .Write ( "<img id='photo" + i.ToString() + "' width='90' border='1' src='imageP/" + Eval ("ListingKey") .ToString()+ "_" + i.ToString() + ".jpg'>" + "<br>");
} else {
Response.Write ("<img width='90' border='1' src='imageP/no_photo.jpg'" );
}
}
%>
</div>
Will this ever work? I got error saying
The name 'File' does not exist in the current context, but I already put
<%@ import namespace="system.IO" %> on the top?
Thanks for your help
I am new with asp.net
I create a page before mainly with Response.write from the code behind. Basically I create a table and fill in the dataReader field
In the new TemplateField front I just use the <%#Eval("dataFields")%> to display data. It went fine but I run into this problem. As you can see from the Code attached, originally I have a section check if the file exist then write the images into a <td> column.
I tried to convert it into
<div style="float: left;">
<% for (int i = 1;i< 20;i++){
string path = "E:\\CARETSDailypull5000\\
path+= Eval("ListingKey")+"_"+i.T
if(File.Exists(path) {
Response .Write ( "<img id='photo" + i.ToString() + "' width='90' border='1' src='imageP/" + Eval ("ListingKey") .ToString()+ "_" + i.ToString() + ".jpg'>" + "<br>");
} else {
Response.Write ("<img width='90' border='1' src='imageP/no_photo.jpg'"
}
}
%>
</div>
Will this ever work? I got error saying
The name 'File' does not exist in the current context, but I already put
<%@ import namespace="system.IO" %> on the top?
Thanks for your help
For i = 1 To 20
If File.Exists("E:\CARETSDaily\Photographs\" + dr("ListingKey") + "_" + i.ToString + ".jpg") Then
Response.Write("<img id='photo" + i.ToString + "' width='90' border='1' src='imageP/" + dream("ListingKey") + "_" + i.ToString + ".jpg'>" + "<br>")
End If
Next
Are you using any databound control? such as datagrid, gridview, listview etc...
ASKER
Yes, I use a gridView with TemplateField. So most of the fields are in this form <%# Eval("fieldName")%>, But inside of this <% %> block,I cannot use Eval() or Bind().
Thanks for helping
Thanks for helping
Can you post the full code?
ASKER
I change the aspx a little so I can display the picture at the bottom, but eventually I need to display them together with the data.
aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ShowDetails.aspx.cs" Inherits="ShowDetails" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID ="detail" runat ="server" AutoGenerateColumns ="false"
DataKeyNames ="ListingKey" DataSourceID="SqlDataSource1">
<Columns >
<asp:TemplateField>
<ItemTemplate>
<div class="listing_addr">
<%#Eval("FullStreetAddress")+" " %><%#Eval ("City")+" "+Eval ("State")+" "+ Eval ("ZipCode")%>
</div>
<div class="listing_top">
<div style="float: left;">
<img id="prop_img" width="130" src="<%= GetPath() %>" />
</div>
<div style="float: left;">
<div>For Sale:$ <span ><%# String.Format("{0:$####,####,##0}", Eval("ListPrice"))%></span></div>
<div>Listing Date:<span><%# GetDate ( Eval("ListingDate").ToString()) %></span></div> </br>
<div><%#Eval("BedroomsTotal") %>Beds / <%#Eval("BathsTotal") %>Baths / <%#Eval("BuildingSize") %> Sqft </div>
<div><%#Eval("PropertySubType") %> /Built: <%#Eval("YearBuilt") %> </div>
</div>
<div style="float: left;">
<input id="birdy" type="image" height="25" src="img/birdsview.png" value="" "/>
<input id="saving" type="image" value="95143272825" src="img/icon_save.png"/>
save
</div>
<div style="float: left;">
<div>
</div>
</div>
</div>
<div class="listing_desc">
DESCRIPTION
<div>
</div>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:PropertyConnectionString %>"
SelectCommand="SELECT * FROM [resiActiveDetWin] "></asp:SqlDataSource>
</div>
<div id="bottm_img" runat ="server" />
</form>
</body>
</html>
---------- code behind -----------
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
public partial class ShowDetails : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string key = Request.QueryString["id"];
SqlDataSource1.SelectCommand =
"SELECT * FROM [resiActiveDetWin] where ListingKey="+"'"+key+"'" ;
string cont="";
for (int i = 0; i < 20; i++)
{
if (File.Exists("E:\\CARETSDailypull5000\\Photographs\\" + key.ToString() + "_"+i.ToString ()+".jpg"))
{
cont += "<img id='photo" + i.ToString() + "' width='87' border='1' src='imageP/" + key.ToString() + "_" + i.ToString() + ".jpg'>";
}
}
bottm_img.InnerHtml = cont;
}
public string GetPath()
{
string key = Request.QueryString["id"];
if (File.Exists("E:\\CARETSDailypull5000\\Photographs\\" + key.ToString() + "_0" + ".jpg"))
{
return "imageP/"+key.ToString ()+"_0.jpg";
}
return "images/nophoto.jpg";
}
public string GetDate(string sender )
{
string str = sender .ToString ();
str = str.Substring(0, 8);
return str;
}
}
ASKER
Hello giftsonDJohn,
in the front aspx I have an input image with id"birdy", I need to dynamically changed the value of this input. But the attribute will not take <%#Eval("address")%> ,like
<input id="birdy" type="image" src="xx" value="<%#Eval("Address") %>/ <%# Eval("City")%>" />
Thanks
in the front aspx I have an input image with id"birdy", I need to dynamically changed the value of this input. But the attribute will not take <%#Eval("address")%> ,like
<input id="birdy" type="image" src="xx" value="<%#Eval("Address") %>/ <%# Eval("City")%>" />
Thanks
Hi,
It can do inside a databound context. But it has to enclose withing single quotes.
Try this.
<input id="birdy" type="image" src="xx" value='<%#Eval("Address") / Eval("City")%>' />
It can do inside a databound context. But it has to enclose withing single quotes.
Try this.
<input id="birdy" type="image" src="xx" value='<%#Eval("Address") / Eval("City")%>' />
ASKER
Thank you, giftsonDJohn,
It shurely worked fine. Now about the images I want to insert into the templateField, originally I place a <div id=" botttom_img" runat="server"> and try to insert innerHtml with images. I got the error message saying cannot find the bottom_img. as soon as I move it out from TemplateField, no problem to reference it and insert the innerHtml.
Is it possible to create a div tag inside of templateField and reference it from code behind? Appreciate your help
It shurely worked fine. Now about the images I want to insert into the templateField, originally I place a <div id=" botttom_img" runat="server"> and try to insert innerHtml with images. I got the error message saying cannot find the bottom_img. as soon as I move it out from TemplateField, no problem to reference it and insert the innerHtml.
Is it possible to create a div tag inside of templateField and reference it from code behind? Appreciate your help
can you post the example code? It will be easy for me.
ASKER
I got the answer, I create a function and from the within the div have something like
<div>
<%# DisplayImage(Eval("Listing Key")) %>
</div>
make the code behind function to return all the images.
<div>
<%# DisplayImage(Eval("Listing
</div>
make the code behind function to return all the images.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks and have to continue the project with more questions ahead..
ASKER
<%@ Import Namespace="System.IO" %> then the above problem solved.
now I have another error
Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.
Guess I cannot use Eval() this way? Thanks