保险计划、被保人年龄、保障期限这三个筛选功能都是动态的,属于同一张表,这三个组合起来下面的价格都会变,要如何实现这个动态功能?

解决方案 »

  1.   


    第二张图的循环就是循环的那个保险计划、被保人年龄、保障期限,下面数据库第二张表是我在后台用ajax动态添加的数据,SearchTitle就是第一张表的保险计划ID拼接起来的,也就是前台这三个筛选选中的ID,Price就是对应的价格。
      

  2.   

    点击不同的选项的时候通过ajax到服务器获取相应的价格
    或者先一次性将全部价格保存到隐藏域,通过JS显示相应的价格都行
      

  3.   

    贴出aspx、贴出数据库表,其实这是远远不够的。因为这并不能很好地配合起来。所以 #1 楼才会提出那样的问题。你需要给出程序界面关键的 Model 实体设计,这样才能让所有人都明白你到底想了什么、设计到什么程度。随便举例,我尽量把你的 Model 简化一下,假设有这样的结构public class Model
    {
        public List<一级菜单> Items; 
      }
    public class 一级菜单
    {
        public string 行标题;      //显示在每一行的最左边
        public string 被选中的二级菜单 = null;
    }在 asp.net 中,一个客户端 html 的 <a> 元素链接要获得点击事件,对应在服务器控件中就是使用 LinkButton 控件。通过LinkButton控件的 Click 事件处理,你可以在你的 ViewState 集合所保存的“ViewModel”对象中去改变相应一级菜单下的“被选中的二级菜单”字段的值。再绑定 LinkButton 的时候,可以自定义属性来绑定你数据库表中的 PlanID。例如(仅是举例,不保证没有语法错误)<asp:LinkButton runat="server" Text='<%# Eval("PlanName") %>' My_Plan_ID='<%# Eval("PlanID") %>' OnClick=........><asp:LinkButton>在点击事件处理过程中,你可以取出 My_Plan_ID 属性值,从而知道点了什么选项,例如private void .......(object sender, EventArgs e)
    {
        var btn = (LinkButton)sender;
        var planID = btn.Attributes["My_Plan_ID"];
        .......
    }知道了点击了什么,更新你的 Model,那么页面上就总是保存着每一个一级菜单下具体被点击的二级菜单项的名称。
    最后才是你的问题,你的问题此时就是雕虫小技了。只要需要计算价格,可以通过var model = (Model) ViewState["model"];随时从页面状态集合中取得当前的Model,遍历一级菜单,查找其选项下被选中的二级菜单的价格。
      

  4.   

    另外,你贴出的 aspx 有一个未明确说明的、存疑的问题。你没有说明你的内嵌的 Repeater 跟外边的 Repeater 是如何区分不同的数据集合的,两个 Eval("PlanName") 表达式显然是绑定不同的数据集合。如果你已经实现了嵌套控件的动态数据集合,那就没有问题。否则可以参考 http://www.xinfengit.com/200907/0215670.html
      

  5.   

    你选择 asp.net 来实现这个功能,但是 asp.net 是一遍遍刷新页面的。即使是 UpdatePanel 看上去是“无刷新的”,由于实际上那只是障眼法,asp.net 损失的性能和交互体验还是很大。然而让你使用纯前端方式编程,这看起来与你的知识结构不符。其实不是那么容易轻易地转为纯前端(不使用 asp.net 来产生界面)设计开发的。随便学点 javascript、jQuery,知道 ajax 知识,只能做很简单的很初级的页面,稍微复杂了、乱了,那就比使用 asp.net 更危险。我一直想回答一些前端开发方面的设计知识,因为这才是我们的关于各种平台(桌面、手机、平板、普通网站,等等) 前端开发的技术宿主。可惜 csdn 上没有这方面的问题,都是刚学点 javascript 就来“开发ajax”的那类开发人员的问题,我无法回答。