0

不确定我的标题是否正确。

我有一个按钮,当我点击它时,它会弹出一个小窗口(基于中继器中的数据)让用户键入信息并单击OK按钮进行下一步。

下面是我的代码Button.Click

protected void btnRedeemAll_Click(object sender, EventArgs e)
    {
foreach( RepeaterItem itm in repGiftResults.Items )
{
    if (pr.AdditionalFieldsEnabled == true)
    {
        AdditionalInfoGiftProcess(pid, giftId, txtQty, txtToken);
    }
}
}

divAdditionalInfo 是一个部门ID,divAdditionalInfo.Style["visibility"] = "visible"; 和 divAdditionalInfo.Style["display"] = "table-cell"; 就是弹出一个窗口让用户输入信息,然后单击“确定”按钮继续: 以下是 AdditionalInfoGiftProcess() 函数的代码:

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";
}

以下是我divAdditionalInfo在 html 中的代码:

<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>

当我点击temoBtn按钮时,我只会弹出 1 个时间窗口(div),这意味着我只能输入 1 个时间信息并点击OK按钮。

我想让window(div)一个一个弹出3次,这样我就可以输入3次信息,然后一个一个地点击OK按钮。

但是,最后一次弹出窗口就像已经覆盖了那些早期弹出窗口一样。

有什么办法解决这个问题吗?

ps:其实你可以忽略html代码。它只是生成弹出窗口的代码。意思是,当我单击tempBtn按钮时,分区id = "divAdditionalInfo"将提示为一个窗口,让用户输入信息并单击OK按钮。

4

2 回答 2

0

在你的循环中,你没有任何东西可以接受输入。

您所做的只是将可见性设置 3 次,然后继续。

在确定和取消按钮的处理程序中,您可以检查任何未决消息并在必要时显示下一条消息。

于 2013-06-11T10:56:02.640 回答
0

你想在这里发生什么?当用户单击确定时,会发生什么吗?或者用户是否需要单击确定三次才能使弹出窗口消失?

无论如何 - 正如您的代码现在所代表的那样,服务器正在生成一个可见的 div 。使其可见一次与使其可见三次具有相同的效果。到达客户端后,您可以尝试使用 JavaScript 强制用户使用 div 三次,然后它就会消失。

这对用户来说听起来不是一个好情况。也许考虑为您的三个弹出窗口使用单独的元素?

编辑:

我仍然不确定您如何使用代码设置不同元素的样式。div 在哪里声明?在中继器的模板内?如果是这样 - 我很惊讶您的代码可以编译。您需要遍历生成的转发器模板实例并调用FindControl("divAdditionalInfo")它们中的每一个以访问 div 的每个实例。

于 2013-06-11T10:47:32.470 回答