如题
我想根据数据库的内容来动态创建一些层,并在层中设置一些Image控件
怎么实现呢,最好能给一些实例代码!
谢谢
我想根据数据库的内容来动态创建一些层,并在层中设置一些Image控件
怎么实现呢,最好能给一些实例代码!
谢谢
解决方案 »
- 请教IUSR_MachineName 与 Network Service/ASPNET 两个账户之间的关系
- 高分求解!!!很难!!!
- 我郁闷了,我烦燥了。为什么delegate还搞不懂。
- 如何忽略公共的style, 在自己的html里用自己的style?
- 打开项目时系统提示“未指定错误”
- asp.net发邮件问题请教(急)
- 请问C#可以用指针吗? 如何判断服务器是POS还是GET
- asp.net中怎么判断request的一个值是否为空?
- 求正则表达式:不含某一字串"asp.net"
- 这个是asp.net教程上的例子,为什么网页显示不出来控件???
- onunload与document.location.href的冲突
- access中like写法
点击链接后在链接下面显示图片, 那么可以利用asp.net ajax的PopupControlExtender做一下.
这个例子是读取Northwind数据库的Employees表. 只读取了EmployeeID, LastName, Photo三个字段.
LastName显示为链接,但点击后不会引起PostBack,在链接下面显示对应的图片. 先做一个根据传进的EmployeeID, 生成图片的ashx.
注意这里有个78位的位移操作,这个是Northwind数据库的特例,其它显示数据库二进制的代码不用做这个.
//ShowPic.ashx
C# code
<%@ WebHandler Language="C#" Class="ShowPic" %>using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;public class ShowPic : IHttpHandler {
public void ProcessRequest (HttpContext context) {
int empID = System.Convert.ToInt32(context.Request.QueryString["EmployeeID"]);
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["NorthwindConnectionString1"].ConnectionString;
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select Photo from Employees where EmployeeID=@empID";
cmd.Parameters.AddWithValue("@empID", empID);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (reader.HasRows)
{
if (reader.Read())
{
context.Response.ContentType = "Image/bmp";
//下面这些代码在一般的读取二进制时没必要. 可以参考其他代码.
const int OleHeaderLength = 78;
int length = ((Byte[])reader["Photo"]).Length;
int strippedImageLength = length - OleHeaderLength;
byte[] strippedImageData = new byte[strippedImageLength];
Array.Copy((Byte[])reader["Photo"], OleHeaderLength,
strippedImageData, 0, strippedImageLength); context.Response.BinaryWrite(strippedImageData); context.Response.BinaryWrite((Byte[])reader["Photo"]);
}
}
}
}
public bool IsReusable {
get {
return false;
}
}}Default.aspx
HTML code
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="EmployeeID" DataSourceID="SqlDataSource1"
EmptyDataText="没有可显示的数据记录。">
<Columns>
<asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" ReadOnly="True"
SortExpression="EmployeeID" />
<asp:TemplateField HeaderText="Last Name">
<ItemTemplate>
<asp:LinkButton runat="server" ID="LinkButton1" Text='<%# Eval("LastName") %>' OnClientClick="return false;" />
<cc1:PopupControlExtender ID="pce" runat="server" TargetControlID="LinkButton1" PopupControlID="pnlPic" Position="Bottom">
</cc1:PopupControlExtender>
<asp:Panel runat="server" ID="pnlPic">
<img alt='<%# Eval("LastName") %>' src= 'ShowPic.ashx?EmployeeID=<%# Eval("EmployeeID") %>' />
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString1 %>"
ProviderName="<%$ ConnectionStrings:NorthwindConnectionString1.ProviderName %>"
SelectCommand="SELECT [EmployeeID], [LastName] FROM [Employees]">
</asp:SqlDataSource>
关键是ItemTemplate内的东西.这个例子不能算太好. 但也可以试一下.
在DIV中通过innnerhtm动态添加inage控件
如
var d= document.createElement("DIV");
d.style.backgroundColor= "red";
d.width= 100;
d.height= 100;
d.innerText="";
document.body.appendChild(d); mydiv.Controls.Add(new Image());
然后子div里position:absolute, top:100px; left: 100px;这样子整?
string wrt1 = "<div id='picview' class='picview' style='height: 599px'><div id='station2' style='height:"+height.ToString()+"px' position:relative><img src='一级站.bmp'/></div></div>";
Page.Response.Write(wrt1);
这是我写的语句,结果又创建了一个'picview' 层,不是我想要的
我是想在原先业已存在的picview中创建一个station2层,而且station2层坐标位置是相对于picview层的,其位置可以动态控制
怎么实现呢?
divid.style.top=body.scrollTop+(body.offsetHeight-divid.offsetHeight)/2
divid.style.left=body.scrollLeft+(body.offsetWidth-divid.offsetWidth)/2
divid.style.left=body.scrollLeft+(body.offsetWidth-divid.offsetWidth)/2
这些代码应该在哪里写呢?
我想应该只能在Page_Load函数里面写吧
我感觉不太符合我的需求
我是要在一个图片中动态创建几个层,在动态创建的层中再动态的穿件Image控件
因为我还要对这幅地图进行放大、缩小及平移工作,这些动态创建的Image控件
也要进行相应的工作
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
* { margin: 0; padding: 0; }
#outer_div { position: relative; width: 250px; margin: 50px 40px; border-top: solid 3px Red; }
#inner_div { position: absolute; top:10px; left: 20px; background: #AAA; }
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="outer_div">
The outer div
<div id="inner_div">
This is some text...
</div>
</div>
</form>
</body>
</html>
没别的,主要说明一个外层position:relative会成为新的定位环境。参考一下。
我还有一个问题:
int width=18, height=18;
string wrt1 = " <div id='station2' style='height:"+height.ToString()+"px' position:relative> <img src='一级站.bmp'/> </div>";
Page.Response.Write(wrt1); 在这些代码中怎么设置picview层为我想动态创建的station2的祖先元素呢?谢谢
谢谢
你邮箱多少?
qq号码多少?
<script type="text/jscript" language="javascript">
var rate = 0.2;
var pp = document.getElementById("viewArea");
var vv = document.getElementById("picview");var ie=document.all;
var nn6=document.getElementById&&!document.all;
var isdrag=false;
var y,x;
var st,sl;
var tmpX,tmpY;function moveMouse(e) {
if (isdrag) {
var mouseX = nn6 ? e.clientX : event.clientX;
var mouseY = nn6 ? e.clientY : event.clientY;
vv.scrollTop = st+(y-mouseY);
vv.scrollLeft = sl+(x-mouseX);
staton1.style.top = tmpY-(y-mouseY);
station1.style.left = tmpX-(x-mouseX);
return false;
}
}function initDrag(e) {
var oDragHandle = nn6 ? e.target : event.srcElement;
isdrag = true;
x = nn6 ? e.clientX : event.clientX;
y = nn6 ? e.clientY : event.clientY;
st = vv.scrollTop;
sl = vv.scrollLeft;
tmpX = station1.style.pixelLeft;
tmpY = station1.style.pixelTop;
document.onmousemove = moveMouse;
return false;
}
pp.onmousedown=initDrag;
pp.onmouseup=new Function("isdrag=false");function bigit(){
pp.style.height = pp.height*(1+rate)+"px";
}function smallit(){
pp.style.height = pp.height*(1-rate)+"px";
pp.style.width = pp.width*(1-rate)+"px";
}function realsize(){
var newImg = new Image();
newImg.src = pp.src;
pp.style.height = newImg.height+"px";
pp.style.width = newImg.width+"px";
}function clickMove(s){
if(s=="up"){
vv.scrollTop = vv.scrollTop-100;
}else if(s=="down"){
vv.scrollTop = vv.scrollTop+100;
}else if(s=="left"){
vv.scrollLeft = vv.scrollLeft-100;
}else if(s=="right"){
vv.scrollLeft = vv.scrollLeft+100;
}
}function changeImage(path){
pp.src = path;
pp.style.width = "600px";
vv.scrollTop = 0;
vv.scrollLeft = 0;
}</script>