asp 动态 表格

要做一个ASP动态表格,上面一行是各种产品,左边一列是城市列表,如果A产品在城市1销售,就对应的打勾。没有就是叉表示,要生成这样一个动态表格。我现在做了2个版本,第一个版... 要做一个ASP动态表格,上面一行是各种产品,左边一列是城市列表,如果A产品在城市1销售,就对应的打勾。没有就是叉表示,要生成这样一个动态表格。
我现在做了2个版本,第一个版本是添加产品及城市,只显示出已经添加的产品及对应的关系,但是问题是如果2个产品在同一城市做,就会又增加一行,这样城市就有2行了。
版本二是显示出所有的城市,现在城市已经到县级了,按省份出相关的城市列表。上面一行的产品也都列出来了,但是这个的问题是对应不上,我用了4种条件,也只部分的出来了几个勾,还有的没显示出来。
我是用ASP+Access做的,用了三个表,一个表是省份城市的名称及对应的id。一个是产品的信息,产品的名称,id。还有一个表是添加的记录,里面有已经添加的产品的信息,及城市,还有对应的城市id。
因为产品跟城市是一对多的关系,同一个产品可以在多个城市销售,而且还需要对产品的信息进行修改,所以要添加的产品单独放到一个表里。这样就3个表。但现在出来的这个动态表格还有以上2个问题。不知道怎么解决,实在想不出来了。不知道ajax表格或别能实现不,静态表格不行啊,维护太费劲了,而且20多个省呢。
寻求高人指点,谢谢。
回答好的追加悬赏!!
对,是一楼的意思~~

332418288@qq.com
谢谢!!
展开
 我来答
常雯利3
推荐于2016-10-13 · TA获得超过686个赞
知道小有建树答主
回答量:659
采纳率:0%
帮助的人:999万
展开全部
'看你表的结构是否和下面一样....
'没有调试,多看注释部分
'可能有的字符显示不正常,留下电子邮件地址直接发文本文件给你
'如运行错误请消息给我
'省份城市表和产品表不变
'对添加记录表做个调整
'表的结构如下

[list_city]-城市表
id-城市索引
city_name-城市名称

[list_prd]-产品表
id-产品索引
prd_name-产品名称
.......其它你定义的字段.

[list_add]-产品添加记录
'id-根据你需要有没有索引都可以
prd_id-产品ID(用来记录添加的产品)(数字)
city_id-城市ID(用来记录添加的产品对应的城市)(数字)

'先取出所有城市的ID/城市名,并格式化数组,完成初始化部分
'让循环分步完成,防止内部嵌套循环给服务器压力国大
Function Lq_GetCity() '返回未格式化的ID和城市数组
'初始化变量
Lq_GetCity_id=""
Lq_GetCity_name=""
'定义SQL语句
Lq_GetCity_Sql="Select * From [list_city]"
'建立对象
Set Lq_GetCity_Rs=Conn.Execute(""&Lq_GetCity_Sql&"")
'循环获取所有城市数据
Do while not(Lq_GetCity_Rs.eof or Lq_GetCity_Rs.bof)
Lq_GetCity_Id=Lq_GetCity_Id&"|"&Lq_GetCity_Rs("id") '累加ID字符串,以|分隔,方便转换为数组,后边用到
Lq_GetCity_Name=Lq_GetCity_Name&"|"&Lq_GetCity_Rs("city_name") '累加城市名字符串,以|分隔,方便转换为数组,后边用到
Lq_GetCity_Rs.movenext
Loop
Set Lq_GetCity_rs=nothing
'对叠加后的数据进行处理,防止发生错误
if Lq_GetCity_Id<>"" then
Lq_GetCity_Id=Right(Lq_GetCity_Id,Len(Lq_GetCity_Id)-1)
else
Lq_GetCity_Id="0"
end if
if Lq_GetCity_Name<>"" then
Lq_GetCity_Name=Right(Lq_GetCity_Name,Len(Lq_GetCity_Name)-1)
Else
Lq_GetCity_Name=""
end if
'输出数据
Lq_GetCity=Array(Lq_GetCity_Id,Lq_GetCity_Name)
End Function

'验证是否已经添加,返回数字0-已经添加,1-没有添加
'入口为产品ID,城市ID
Function Lq_Isadd(Lq_Isadd_Pid,Lq_Isadd_Cid) '_pid-产品ID,_cid-城市ID
'初始化数据
Lq_Isadd_Pid=Clng(Lq_Isadd_Pid)
Lq_Isadd_Cid=Clng(Lq_Isadd_Cid)
'定义SQL语句
Lq_Isadd_Sql="Select * From [list_add] where prd_id="&Lq_Isadd_Pid&" and city_id="&Lq_Isadd_Cid&""
'执行查询
Set Lq_Isadd_Rs=Conn.Execute(""&Lq_Isadd_Sql&"")
If Not (Lq_Isadd_Rs.Eof or Lq_Isadd_Rs.Bof) then '已添加
Lq_Isadd_Err=0
Else
Lq_Isadd_Err=1
End If
Set Lq_Isadd_Rs=Nothing
'返回验证数据
Lq_Isadd=Lq_Isadd_Err
End Function

'初始化数组
Lq_CityData=Lq_GetCity()
CityID_Arr=Split(Lq_CityData(0),"|") '城市ID数组(已格式化)
CityName_Arr=Split(Lq_CityData(1),"|") '城市名称数组(已格式化)

'建立表头数据,顺便取出产品ID数据(表格细节你可自己修饰)
Response.Write "<table>"
Response.Write "<tr>"
Response.Write "<td>城市名称</td>"
'此处建立横向所有产品名单元格
Prdid_Str="" '初始化要取出产品ID数据字符串,格式化数组后方便形成外部循环
'定义SQL语句
Lq_GetPrd_Sql="Select * From [list_prd] order by id asc"
'建立对象
Set Lq_GetPrd_Rs=Conn.Execute(""&Lq_GetPrd_Sql&"")
'循环获取所有城市数据
Do while not(Lq_GetPrd_Rs.eof or Lq_GetPrd_Rs.bof)
Prdid_Str=Prdid_Str&"|"&Lq_GetPrd_Rs("id") '累加产品ID字符串,以|分隔,方便转换为数组,后边用到
'写横向单元格
Response.Write "<td>"&Lq_GetPrd_Rs("prd_name")&"</td>"
Lq_GetPrd_Rs.Movenext
Loop
Set Lq_GetPrd_Rs=nothing
'结束表头数据
Response.Write "</tr>"
'初始化返回的产品ID
If Prdid_Str<>"" then
Prdid_Str=Right(Prdid_Str,Len(Prdid_Str)-1)
Else
Prdid_Str="0"
End If
'格式化为数组
PrdID_Arr=Split(Prdid_Str,"|")

'验证数据部分,此过程在外部进行两个循环检测产品是否添加
For City_I=Lbound(CityId_Arr) To Ubound(CityID_Arr)
Response.Write "<tr>"
Response.Write "<td>"&CityName_Arr(City_I)&"</td>"
'循环验证产品存在数据
For Prd_I=Lbound(Prdid_Arr) To Ubound(Prdid_Arr)
Response.Write "<td>"
'验证部分
Temp_Err=Lq_Isadd(Prdid_Arr(Prd_I),CityId_Arr(City_I))
If Temp_Err=0 Then
Response.Write "√"
Else
Response.Write "×"
End If
Response.Write "</td>"
Next
'结束本行数据
Response.Write "</tr>"
Next
'结束表格
Response.Write "</table>"
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式