这个程序是照着开发文档做的,不是很难,可第一次接触吧,在创建HTML字符串时整花了半天时间,终于忙完了,和源程序有不少改动(改成加载长春的地图了,并且搜索的是单层),因为开始我做是照自己理解做的,把远程都改成自己能容易理解的语句了,呵呵,最需要注意的是s+="<td style=\"cursor:hand\" onClick=\"Result_X.value="+r.Center.X+";Result_Y.value="+r.Center.Y+";Result_Name.value=\\\'"+r.FieldValues[index].ToString()+"\\\';MapControl1_DoPostBack();\"> "+r.FieldValues[index].ToString()+"</td></tr>";中间的那三个杠,现在也不明白为什么要有这三个杠?高手请指点!谢谢了
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using SuperMap.IS.WebControls;
using SuperMap.IS.Utility;
namespace test
{
/// <summary>
/// supermapdivchaxun 的摘要说明。
/// </summary>
public class supermapdivchaxun : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected SuperMap.IS.WebControls.MapControl MapControl1;
protected System.Web.UI.WebControls.Button Button1;
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
this.TextBox1.Text="伪皇宫";
}
else
{
string x=this.Page.Request.Params["Result_X"];
string y=this.Page.Request.Params["Result_Y"];
string n=this.Page.Request.Params["Result_Name"];
if(x!=null&&y!=null&&n!=null)
{
MapCoord mapCenter=new MapCoord(Double.Parse(x),Double.Parse(y));
this.MapControl1.Zoom(mapCenter,1.0);
this.MapControl1.CustomLayer.Divs.Insert("ball",Double.Parse(x),Double.Parse(y),"<a target='_blank' href='url' title='"+n+"'><img border=0 src='images/hotball.gif'></a>");
this.MapControl1.CustomLayer.Visible=true;
}
}
}
public void Show(ResultSet rs)
{
if(rs==null||rs.Recordsets==null||rs.Recordsets.Length<=0||rs.TotalCount<=0)
{
Response.Write("<script>alert(\"not find!\");</script>");
return;
}
if(Page.IsStartupScriptRegistered("s"))
{
return;
}
Session["ResultSet"]=rs;
int tableCount=rs.Recordsets.Length;
string s="<script language='javascript'>var strTable='<input type=hidden name=Result_X ><input type=hidden name=Result_Y ><input type=hidden name=Result_Name >";
Recordset curRecordset;
for(int i=0;i<tableCount;i++)
{
curRecordset=rs.Recordsets[i];
s+="<table style=\"BORDER-LEFT-COLOR: lightgreen; BORDER-BOTTOM-COLOR: lightgreen; BORDER-TOP-STYLE: ridge; BORDER-TOP-COLOR: lightgreen; BORDER-RIGHT-STYLE: ridge; BORDER-LEFT-STYLE: ridge; BORDER-RIGHT-COLOR: lightgreen; BORDER-BOTTOM-STYLE: ridge\">";
int index=0;
for(int j=0;j<curRecordset.ReturnFields.Length;j++)
{
if(curRecordset.ReturnFields[j]=="name")
{
index=j;
break;
}
}
for(int j=0;j<curRecordset.Records.Length;j++)
{
Record r=curRecordset.Records[j];
s+="<tr>";
if(r.Center!=null)
{
s+="<td style=\"cursor:hand\" onClick=\"Result_X.value="+r.Center.X+";Result_Y.value="+r.Center.Y+";Result_Name.value=\\\'"+r.FieldValues[index].ToString()+"\\\';MapControl1_DoPostBack();\"> "+r.FieldValues[index].ToString()+"</td></tr>";
}
else
{
s+="</tr>";
}
}
s+="</table>'";
}
s+=";var divQueryResult=document.getElementById('DivQueryResult');if(divQueryResult!=null){ divQueryResult.innerHTML=strTable;}</script>";
if(!Page.IsStartupScriptRegistered("s"))
{
Page.RegisterStartupScript("sInCurrentWindow",s);
}
}

Web 窗体设计器生成的代码
private void Button1_Click(object sender, System.EventArgs e)
{
QueryParam q=new QueryParam();
q.IsAllLayer=false;
q.Layers=new QueryLayer[1];
q.Layers[0]=new QueryLayer();
q.Layers[0].Name="Park@changchun";
q.ReturnFields=new string[2];
q.ReturnFields[0]="SMID";
q.ReturnFields[1]="name";
q.Layers[0].WhereClause="name like '*"+this.TextBox1.Text.ToString().Trim()+"*'";
ResultSet rs=MapControl1.QueryBySQL(q);
Show(rs);
}
// private void supermapdivchaxun_PreRender(object sender, System.EventArgs e)
// {
// // 显示上次的SQL查询结果 ,用于保持查询结果状态
// object o = Session["ResultSet"];
// if(o != null)
// {
// SuperMap.IS.Utility.ResultSet resultSet = (ResultSet)o;
// if(resultSet != null)
// {
// Show(resultSet);
// }
// }
// }
}
}



浙公网安备 33010602011771号