高分请教如何使一个下拉框Onchange事件无刷新传送多个值?

skystar008 2009-12-26 03:10:17
好久没来光顾,最近被一难题困扰故来此一问!

我有20行下拉框,每个下拉框的内容一样,当选择其中一行下拉框时把参数带出来,值填充到其他文本框或下拉框中,不是多级联动的,但要求无刷新。比如:
下拉框内容为“请选择产品”,当选择了产品之后自动把产品的价格、单位、等值用程序从数据库里读出来填到文本框里,这样的下拉框有20行,各行都不相关。(要传的值是从数据库里读出来的)
...全文
529 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
热心男孩 2010-06-28
  • 打赏
  • 举报
回复
string strTest = "";
strTest += "<script type=\"text/javascript\" language=\"javascript\"> var test=Array();";
foreach (DataRow row in tabLot14News.Rows)
{
strTest += "test[" + row["ID"] + "]='" + row["SavePath"] + "';";
}
strTest += "</script>";

this.test1.Text = strTest;
浪尖赏花 2009-12-31
  • 打赏
  • 举报
回复
产品的价格、单位、等值可以随着产品一起取出来,LZ这里不建议用ajax
antony1029 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fandelei1982 的回复:]
用ajax,传送的多个值可以用json的方式,或按特定方式分割的字符串。
[/Quote]
非常正确
阿非 2009-12-29
  • 打赏
  • 举报
回复
你的问题根本就不是在 数据传递上,用json 和普通的字符串 是没区别的。

你是不知道该如何拼接字符串
skystar008 2009-12-29
  • 打赏
  • 举报
回复
本人对Json不太了解,请给出个详细的方法。
hitlcyu19 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fandelei1982 的回复:]
用ajax,传送的多个值可以用json的方式,或按特定方式分割的字符串。
[/Quote]
正解
witcheryne 2009-12-29
  • 打赏
  • 举报
回复
建议楼主把表格封装成M-V(Model - View)模式的组件。。
只用修改数据模型既可,否则一行一行dom操作非疯了不可..
witcheryne 2009-12-29
  • 打赏
  • 举报
回复
首先要确定的是 这个需要使用到ajax技术..

在onChanged方法中加入ajax处理:
1. 锁定用户操作的数据行;(在异步请求中,不能再让用户对当前数据进行修改,防止多次提交);
2. 向服务器发送异步请求(即,ajax请求);
3. 服务器想客户端返回数据(json,xml之类数据都行);
4. 对当前表单数据进行处理(即,清空原有值,填写新值, 说白了就一堆dom操作);
5. 解除锁定数据行;

如果在2,3步中产生错误或者超时
则直忽略第四步,并向用户反馈错误信息;
zhouyanfss 2009-12-27
  • 打赏
  • 举报
回复
把相关信息拼装成JSON传到客户端就可以了,你JS想怎么处理都可以
xinzhifan4 2009-12-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhouyanfss 的回复:]
把相关信息拼装成JSON传到客户端就可以了,你JS想怎么处理都可以
[/Quote]

不用JSON用字符串拼接也行,当然前提必须是用AJAX实现
mydengjun 2009-12-27
  • 打赏
  • 举报
回复
简单的问题
friendly_ 2009-12-26
  • 打赏
  • 举报
回复
用ajax,传送的多个值可以用json的方式,或按特定方式分割的字符串。
阿非 2009-12-26
  • 打赏
  • 举报
回复
时间不够了,说下思路

首先 页面无刷新还要访问数据库只能是 ajax

传递的参数应该是拼接好的 where 条件

就是同一行中 各个select 的value

假设有三十列,相应数据库表中也必须包含这三十个字段

页面中定义一个array 存储的是 三十个字段的 列名, select 有多少个 array 就有多大。假设array命名为myArray

当每行中的任意一个select 的 onchange 触发时 ,调用 当前行 tr.getElementsByTagName("select") 获得当前行全部select,命名为 selectArray

var where=' 1=1 ';
for(int i=0;i<selectArray.length;i++)
if(selectArray[i].value!='0') //value 0 对应的文本是请选择
where+=' and '+myArray[i]+'='+selectArray[i].value;

这样 就把查询的条件 拼接好了

返回值的话,可以用字符串返回 各个值之间用,分隔

然后split(',') 一下 分别赋值给 相应的 text

skystar008 2009-12-26
  • 打赏
  • 举报
回复
阿非 2009-12-26
  • 打赏
  • 举报
回复
贴个图

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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