tour请进

Frewin 2009-07-26 09:08:59
如果我想在C/S端先确认,才改变图片状态的状态,该怎样处理?分两个情况:
1)在数据库成功保存状态后,才改变图片状态
2)给用户确认,如执行
If MessageBox.Show("", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then

End If
...全文
165 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
toury 2009-08-03
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 frewin 的回复:]
疑问:
1)htm 没有确认,取消等消息提示(是否在myconfirm.htm里写这些代码)
2)是否加入一些信息,如从test.htm传入一些字符到myconfirm.htm
[/Quote]
1)网页里加个confirm自然是非常简单,问题是点了网页里的“确定”以后,那些图片的状态数据怎么回传给C/S才是大问题。B/S结构下可以AJAX给服务器端;但你做的是C/S呀~~~。
我上面的这些建议无非是为了把网页里的数据传递给C/S罢了。至于对话框,就让C/S的MESSAGEBOX去做有何不可呢?

2)根本没必要,加myconfirm.htm的意义很明显,就是为了在页面转向时,让C/S端的webbrowser可以抓到网址,进而分析。
==============================================
不知道你试没试23楼的建议。
如果试了,有问题说问题;如果根本没试那就请把问题一次想清楚说清楚,再发上来,免得一次次的变来变去,耽误大家时间。呵呵
Frewin 2009-08-03
  • 打赏
  • 举报
回复
疑问:
1)htm 没有确认,取消等消息提示(是否在myconfirm.htm里写这些代码)
2)是否加入一些信息,如从test.htm传入一些字符到myconfirm.htm
toury 2009-07-31
  • 打赏
  • 举报
回复
3、C/S端:
当test.htm中JS执行location.href之后,在WebBrowser的事件中Navigating:
'为方便你理解,我分步写。你可以自己整合简化
URL = e.Url.ToString() //得到的实际数据应该是类似于"myconfirm.htm?n=1_0_0_1_0&id=$105004&status=1"这样的字串
Dim arrUrl() As String
dim myStr as string'图片字串
Dim strID As String
Dim strStatus As String

'取得myStr,准备用户点取消后使用
arrUrl= Split(URL,"=")
myStr=arrUrl[1]'得到“1_0_0_1_0&id=$105004&status=1”
myStr=split(myStr,"&")(0)'得到1_0_0_1_0


提示用户:"图片将更改,确认吗?"
1)用户点击了OK:
A)解析参数,得到其他两个变量值strID ,strStatus :

arrUrl= Split(URL, "&")
strID = strUrl(1) '得到的是id=$105004
strID =Split(strID,"$")(1) '得到105004
strStatus = strUrl(2) '得到的是status=1
strStatus = Split(strStatus,"=")(1)'得到1


B)C/S写库
conn.execute("UPDATE [表名] SET [图片状态字段]="+strStatus +" WHERE [图片ID]="+strID)
C)读库
sql="SELECT [图片状态字段] FROM [表名]"
rs.open(sql),conn,1,1
if (not rs.eof){
myStr=""'重新组合myStr
dim ii as integer=0
do while not rs.eof
if myStr=="" then myStr=rs(0) else myStr=myStr+"_"+rs(0)
rs.movenext
loop
end if
if rs.state<>1 then rs.close
set rs=nothing
'最后得到一个类似"0_1_0_1_0"这样的字串myStr:

D)回test.htm页面:
webbrowser.navigate("test.htm?n="+myStr)

用户点击了取消:
webbrowser.navigate("test.htm?n="+myStr)//注意这个myString是原先的状态字串
Frewin 2009-07-31
  • 打赏
  • 举报
回复
在WebBrowser的事件中Navigating
Dim URL As String
URL = e.Url.ToString()
Dim strUrl() As String = Split(URL, "$")
Dim intClassNum As Integer
Dim strBtnNum As String
intClassNum = strUrl(1).Substring(2, 1)
strBtnNum = strUrl(1).Substring(3, 3)
cstring = strBtnNum
If strBtnNum = "003" Then '点击第三张图片
'弹出提示,如果客户按确定,就改变图片,并update数据库 ,(在c/s的load 已经初始每张图片的status了)

End If
toury 2009-07-31
  • 打赏
  • 举报
回复
或者把C/S中解析参数并处理的部分贴过来
toury 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 frewin 的回复:]
转到myconfirm.htm去了,但不能 确定或取消后转到test.htm
[/Quote]
好。你在C/S端做中断,单步跟踪一下,写库了吗?写库后读库正确吗?读库以后组合的字串(就是12楼的myStr)打印出来我看
Frewin 2009-07-31
  • 打赏
  • 举报
回复
转到myconfirm.htm去了,但不能 确定或取消后转到test.htm
toury 2009-07-31
  • 打赏
  • 举报
回复
以上代码我在本地都做了测试,成功后才发出去的
你先告诉我,当点击了页面一个图片后,页面有没有转到myconfirm.htm去?
toury 2009-07-31
  • 打赏
  • 举报
回复
首先确定错误出现在哪一步?是页面加载就有错误还是点击页面更换图片时出现错误,还是C/S解析字串出现错误,还是C/S处理后让web转向出现错误?
Frewin 2009-07-31
  • 打赏
  • 举报
回复
不行啊,调试很多次有错误,
toury 2009-07-31
  • 打赏
  • 举报
回复
实际上,用户点击一个图片后我们并不想让myconfirm.htm里面含网页有转向的功能,它只是个摆设。
页面转向实在C/S端完成的,详见12楼3
toury 2009-07-31
  • 打赏
  • 举报
回复
function changeImg(n,id){
/*原来的代码
o[n].src=imgpath+"002.JPG" //更改点击的图片路径
arr[n]=(arr[n]==0)?1:0; //同时反转更改该图片状态
var status=arr[n];
n=arr.join("_")
location.href ="test.htm?n="+n+"&id="+id+"&status="+status
//注意:此时让C/S去解析这个url后写库
//2、其他用户打开,我们根据数据库的状态(状态=0 为001.jpg,状态=1 为002.JPG),自动显示HTML内容:
//根据上述原理,当其他用户打开时,你只需要去监测数据库图片状态,然后循环读出组合为类似"1_0_0_0_0"这样的字符串,
//如:yourVar="1_0_0_0_0"
//然后组合URL:
//url="test.htm?n="+yourVar
//Navigate这个URL就OK了
*/
//=================================新的=======================
var status=(arr[n]==0)?1:0; //确定要更改图片的更改后的状态
n=arr.join("_") //将全部图片的状态数组转换为状态字串
location.href ="myconfirm.htm?n="+n+"&id="+id+"&status="+status

}
//-->
红字就是用户点击一个图片后的动作;location.href就是页面转向;只有转向,WEBBROSWER才能抓到
Frewin 2009-07-31
  • 打赏
  • 举报
回复
不好意思,出差几天,没上来。
myconfirm.htm 这个是用 <P> </P><P> </P><P> </P><P> </P><P> </P>
<div align=center style="font:14px;color:#0000ff">
loading......
</div>

好像不能在myconfirm.htm和test.html之间撤换
toury 2009-07-27
  • 打赏
  • 举报
回复
1、

<P> </P><P> </P><P> </P><P> </P><P> </P>
<div align=center style="font:14px;color:#0000ff">
loading......
</div>

2、test.htm

<html>
<head>
<title>test</title>
<style>
SPAN {cursor:pointer;}
</style>
<SCRIPT LANGUAGE=javascript>
<!--
var imgpath="img/"; //设置图片路径全局变量
var arr=[]; //状态数组(保存每张图片的点击状态)
var o=null; //图片对象数组
var n;

window.onload=function(){
o=document.getElementsByName("frewin")
var url=location.href ;
if(url.indexOf("=")==-1){n="";}
else{ n=url.split("=")[1].toString().replace("&id","");}

//1、一开始,所有的图片都同一样(假设001.JPG)
if(n.length==0){ //没有参数视同刚开始(初始化)

for(var i=0;i<o.length;i++){ //循环改变各图片的SRC
o[i].src=imgpath+"001.JPG"; //所有的图片都同一样(假设001.JPG)
arr[i]=0; //同时初始化状态数组
}
return;//跳出函数
}
else{
arr=n.split("_")
for(var i=0;i<arr.length;i++){ //循环改变各图片的SRC
o[i].src=(arr[i]==0)?imgpath+"001.JPG":imgpath+"002.JPG"; //根据状态调用图片
}
}

var sHTML=document.getElementById("aaa").innerHTML ;
var re=/REPLACENUM/g
sHTML=sHTML.replace(re,n)

document.getElementById("aaa").innerHTML=sHTML;
alert(sHTML)

}

function changeImg(n,id){
/*原来的代码
o[n].src=imgpath+"002.JPG" //更改点击的图片路径
arr[n]=(arr[n]==0)?1:0; //同时反转更改该图片状态
var status=arr[n];
n=arr.join("_")
location.href ="test.htm?n="+n+"&id="+id+"&status="+status
//注意:此时让C/S去解析这个url后写库
//2、其他用户打开,我们根据数据库的状态(状态=0 为001.jpg,状态=1 为002.JPG),自动显示HTML内容:
//根据上述原理,当其他用户打开时,你只需要去监测数据库图片状态,然后循环读出组合为类似"1_0_0_0_0"这样的字符串,
//如:yourVar="1_0_0_0_0"
//然后组合URL:
//url="test.htm?n="+yourVar
//Navigate这个URL就OK了
*/
//=================================新的=======================
var status=(arr[n]==0)?1:0; //确定要更改图片的更改后的状态
n=arr.join("_") //将全部图片的状态数组转换为状态字串
location.href ="myconfirm.htm?n="+n+"&id="+id+"&status="+status

}
//-->
</SCRIPT>
</head>
<div id=aaa>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="25" height="80">  </td>
<td width="80"><span id="$105001" onclick="javascript:changeImg(0,this.id);"> <img name=frewin src="" width="80" height="86"> </a> </td>
<td width="25">  </td>
<td width="80"><span id="$105002" onclick="javascript:changeImg(1,this.id);"> <img name=frewin src="" width="80" height="86"></span> </td>
<td width="25">  </td>
<td width="80"><span id="$105003" onclick="javascript:changeImg(2,this.id);"> <img name=frewin src="" width="80" height="86"></span> </td>
<td width="25">  </td>
<td width="80"><span id="$105004" onclick="javascript:changeImg(3,this.id);"> <img name=frewin src="" width="80" height="86"></span> </td>
<td width="25">  </td>
<td width="80"><span id="$105005" onclick="javascript:changeImg(4,this.id);"> <img name=frewin src="" width="80" height="86"></span> </td>
<td width="25"><span id="$105006" > </span> </td>
</tr>
</table>
<div>
</body>
</html>


3、C/S端:
当test.htm中JS执行location.href之后,webbrowser转向myconfirm.htm,此时C/S就可以抓到参数了。
1)提示用户:"图片将更改,确认吗?"
OK:
A)解析参数,得到三个变量值:
myString="0_1_0_1_0"
xxID=105002(或者其他)
status=1(或者0)

B)C/S写库
conn.execute("UPDATE [表名] SET [图片状态字段]="+status+" WHERE [图片ID]="+xxID)
C)读库
sql="SELECT [图片状态字段] FROM [表名]"
rs.open(sql),conn,1,1
if (not rs.eof){
var myStr='';
for(var i=0;i <rs.recordcount;i++){
if(myStr==""){ myStr=rs(0); }
else{ myStr=myStr+"_"+rs(0) }
}
}
最后得到一个类似"0_1_0_1_0"这样的字串myStr:

D)回test.htm页面:
webbrowser.navigate("test.htm?n="=myStr)

cancel:
webbrowser.navigate("test.htm?n="=myStr)//注意这个myString是原先的状态字串
kiba518 2009-07-27
  • 打赏
  • 举报
回复
观望 学习
toury 2009-07-27
  • 打赏
  • 举报
回复
不要贴了,我找到了,一会写好给你
toury 2009-07-27
  • 打赏
  • 举报
回复
我在你上个帖子里的回复被CSDN搞没了,我要找找我是怎么写的了,哈。
我先说详细点,看你能不能做出来。做不出来我再重写吧。
1、myconfirm.htm

<P> </P><P> </P><P> </P><P> </P><P> </P>
<P> </P><P> </P><P> </P><P> </P><P> </P>
<div align=center>
loading.................
或放个动画图片
</div>

将此文件与test.htm放一起

2、当用户点击某图片时,你在我给你的<script></script>的JS脚本里找找是怎么得到那个图片的ID的?好像是得到<span>的ID,反正就是$105002一类的东东;然后。。。。。。。。
算了,还是我帮你写吧。你把我给你的<script></script>里的内容贴给我
Frewin 2009-07-27
  • 打赏
  • 举报
回复
可以,也是很不错的方法。但因为我之前都没搞个html(b/s),所以思维比较狭隘,你最好能详细点,谢谢你!
toury 2009-07-27
  • 打赏
  • 举报
回复
myconfirm.htm页面中就一个等待处理的页面,比如一个等待的动画GIF图片或一句提示:loading.......
toury 2009-07-27
  • 打赏
  • 举报
回复
是否可以这样:
当点击了某个图片后,在test.htm网页里用JS转向到一个提示界面,比如myconfirm.htm?n=0_1_0_1_0&id=$105002&status=1 ;此时C/S就抓到那些参数了,同时提示用户“是否更改图片??”若用户确定,就可实施1楼的做法了。他取消更改的话,就navigate("test.htm?n=0_1_0_1_0")回原来的页面;

PS:你顶楼把顺序写反了1)、2)应该倒过来;误导我了,呵呵
加载更多回复(5)

61,112

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧