防止function 被 override 了 (C#)
大家好,
我有一个repeater, 在repeater 里面, 如果碰到对的condition的话,就会call 一个function, 这个 function 是pop up 一个 小window, 让user 可以在里面填写资料,然后按 "OK" 按钮。
以下是我的 code :
foreach( RepeaterItem itm in repGiftResults.Items )
{
if (pr.AdditionalFieldsEnabled == true)
{
AdditionalInfoGiftProcess(pid, giftId, txtQty, txtToken);
}
}
public void AdditionalInfoGiftProcess(int productID, int giftID, TextBox txtQty, UserControls_TokenControl txtToken)
{
/*
Some logic here
*/
//generate pop up window
divAdditionalInfo.Style["visibility"] = "visible";
divAdditionalInfo.Style["display"] = "table-cell";
}
<div
id="divAdditionalInfo"
class="BlackCover"
style="VISIBILITY:hidden; DISPLAY:none;" runat="server">
<!--
html code that generate the pop out window.
consist of text box and `OK` button, and "Cancel" button.
-->
</div>
[解决办法]
无论碰到多少次对的condition,你的代码永远只弹出一次窗口(或者说只是把同一个窗口显示很多次而已)。因为你的只有一个DIV:divAdditionalInfo。
所以你要么
1.用其它办法创建多个 window pop up
2.要么在用户点OK 按钮时才调出另一个不同的资料(你现在的代码放在同一个循环里,所以显示的是最后一个符合pr.AdditionalFieldsEnabled == true的资料,也就是你所说的“被最后一个window覆盖了”)
[解决办法]
lz你的主题和正文完全不搭边啊。devmiao回答的是主题的问题。
[解决办法]
创建很多个窗口是很容易的比如设置某个控件的innerHTML,但收集用户在每个窗口输入的数据是个难题。
另外可以通过为OK按钮添加Onclick事件,在事件处理程序中按需要改变divAdditionalInfo的显示信息,对于用户来说相当于出现了另外的窗口(这种方法也会面临收集信息难题)。
解决思路是这样的,但你的程序还会出现更多的问题,主要原因是你还没分得清本地应用程序和WEB应用程序的区别。
给你一句话:如果一个解决方案会带来无数的难题,那说明你的设计有问题经,这个时候最好的办法是把它们全删了再设计一个全新的方案。
我觉得只要你肯花心思把一本入门书看完,你现在的问题就迎刃而解了
[解决办法]
//generate pop up window
divAdditionalInfo.Style["visibility"] = "visible";
divAdditionalInfo.Style["display"] = "table-cell";
楼主所谓的“弹出”一个窗口,其实只是让隐藏的窗口显示罢了,
所以你怎么可能让一个窗口显示3次呢?
可以换个思路,一次让用户输入全部要改输入的信息,而且你这样不断弹窗口,用户也会感到反感的。
如果3次输入之间,后者会被前者影响,那也可以在一个窗口里面用UpdatePanle做联动