关于dataList里面图片显示的问题
由于用户上传的图片太大且比较不确定,在列表面显示图片的时候如果固定了长宽,图片会出现变形的情况,故加了一个JS的函数来按比例缩小图片,但是用上之后有的图片受了限制,有的还是很大,好像不受JS的限制了。故我来取经
.aspx文件用来显示图片的<div class="pic">
<asp:Image ID="imgurl" runat="server" ImageUrl='<%# Eval("imgurl") %>' />
</div>.cS文件用来控制图片大小的protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
int id = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]);
Image ib = (Image)e.Item.FindControl("imgurl");
Image bigimg = (Image)e.Item.FindControl("bigimg");
ib.Attributes.Add("onload", "javascript:imgadapter(this,120,90)");
string img = ib.ImageUrl;
if (img != "")
{
ib.ImageUrl = "/business/" + img;
ib.AlternateText = "产品图片(URL)" + img;
} else
{
ib.ImageUrl = "/img2007/nopic.jpg";
ib.AlternateText = "无产品图片1";
} bigimg.ImageUrl = ib.ImageUrl;
}
JS函数function imgadapter(obj,width,height)
{
var max_height = height; //设置最大高度
var max_width = width; //设置最大宽度
var real_height = obj.height;
var real_width = obj.width;
if(obj.height>max_height)
{
obj.height = max_height;
obj.width = Math.round(obj.height*real_width/real_height);
}
if(obj.width>max_width)
{
obj.width = max_width;
obj.height = Math.round(obj.width*real_height/real_width);
}
}还有什么其它办法可以实现吗?
由于用户上传的图片太大且比较不确定,在列表面显示图片的时候如果固定了长宽,图片会出现变形的情况,故加了一个JS的函数来按比例缩小图片,但是用上之后有的图片受了限制,有的还是很大,好像不受JS的限制了。故我来取经
.aspx文件用来显示图片的<div class="pic">
<asp:Image ID="imgurl" runat="server" ImageUrl='<%# Eval("imgurl") %>' />
</div>.cS文件用来控制图片大小的protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
int id = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]);
Image ib = (Image)e.Item.FindControl("imgurl");
Image bigimg = (Image)e.Item.FindControl("bigimg");
ib.Attributes.Add("onload", "javascript:imgadapter(this,120,90)");
string img = ib.ImageUrl;
if (img != "")
{
ib.ImageUrl = "/business/" + img;
ib.AlternateText = "产品图片(URL)" + img;
} else
{
ib.ImageUrl = "/img2007/nopic.jpg";
ib.AlternateText = "无产品图片1";
} bigimg.ImageUrl = ib.ImageUrl;
}
JS函数function imgadapter(obj,width,height)
{
var max_height = height; //设置最大高度
var max_width = width; //设置最大宽度
var real_height = obj.height;
var real_width = obj.width;
if(obj.height>max_height)
{
obj.height = max_height;
obj.width = Math.round(obj.height*real_width/real_height);
}
if(obj.width>max_width)
{
obj.width = max_width;
obj.height = Math.round(obj.width*real_height/real_width);
}
}还有什么其它办法可以实现吗?
解决方案 »
- web.config 里 服务器错误在“/”应用程序 求解决??????
- 关于 dbml 文件过大的疑虑
- C#中关于串口通信的问题
- 图表相关,MSCHART相关,C#,曲线图绘制及缩放,问题内详
- 请问如何利用vs.net 2005进行团队开发,请有经验的朋友进来指导一下,谢谢,在线等!
- Socket编程时,数据包如何加密?
- raw的问题,在线等待,现在是百思不得其解
- GridView 导入excel(2007版的格式)
- 7、如果得到当前记录集的某条记录的某个值(在datagrid中选中一条记录,得到这一条记录的某个字段的值,即如何却定Rows[int]的int 值)
- C#中有关Dll文件的一个问题。
- C# 非常奇怪的问题.求高手解决.
- 求一正则
private void ImgFileShow(string path,Image Img) //path 为存储图片的路径,Img 为显示图片的控件ID
{
//压缩后图片的最大宽和高
int wa = 90;
int hb = 80;
if (File.Exists(Server.MapPath(path)))
{
System.Drawing.Image imga = System.Drawing.Image.FromFile(Server.MapPath(path));
if ((float)imga.Width / imga.Height >= (float)wa / hb)
{
Img.Width = System.Web.UI.WebControls.Unit.Parse(wa.ToString());
}
else
{
Img.Height = System.Web.UI.WebControls.Unit.Parse(hb.ToString());
}
Img.ImageUrl = path;
}
#endregion