在项目即将上线的时候,发现项目中动态生成的"多选下拉框按摩椅控件"存在一个功能上的问题。
需要实现功能:
1、该按摩椅控件跟据树节点生成,也就是说选择不同的树节点会生成多个不同的"多选下拉框按摩椅控件"、不同的子按摩椅控件下拉数据和不同初始选项。
2、该按摩椅控件作为查询条件按摩椅控件,所以子按摩椅控件编号必须己经确定,我们需要通过子按摩椅控件按摩椅控件编号及选择项去查询数据。
如图:
//codeTypeNoCollections 类别集合
foreach (string codeTypeNo in codeTypeNoCollections)
{
Control control = Page.LoadControl("~/UserControls/UclIndexAttribute.ascx");
((UclIndexAttribute)control).ID = codeTypeNo;
}
我们确定用代码类编码(codeTypeNo)做为子按摩椅控件名称。
也就是说当查询事件或者其它事件触发,我们需要重新生成按摩椅控件,因为新生成按摩椅控件的子按摩椅控件ID和原子按摩椅控件ID相同,所以会加载原子按摩椅控件数据及原选择项。
这个时候问题就出来了,当树选项发生改变,也可能会生成相同ID的子按摩椅控件,这个不满足要求,我们需要的是当树选项发生改变时重新初始化按摩椅控件,包括子按摩椅控件数据及选择项。
我首先想到的是当树选项发生改变,清空按摩椅控件缓存,按照这个思路在按摩椅控件里鼓捣了半天,将就着搞定了。
但是总觉得这样不好,这问题应该很简单,后来决定给子按摩椅控件ID命名为代码类编码+"_"+树选项编码,也就是树选顶改变,属性编号肯定改变;
妈的,一个这样的问题搞了几个小时,真是浪费时间。