0

我正在尝试在 gridview 的 Row_Command 事件中执行以下操作。但是弹出框永远不会出现,我已经尝试了很多不同的方式..但没有运气。如果有人能看到这个问题,我真的很感激一个指针。

protected void Gridview_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if(e.CommandName == "Merchant")
    {
        if (ItemsAvailable)
        {
            StringBuilder sb = new StringBuilder();
            MyClass class = new MyClass();
            TList<LineItems> otherItems = MyClass.GetItems(id);
            bool IsNotAvailable = false;

            foreach (LineItems item in otherItems)
            {
                Merchandise skuMerchandise = skuMerchandise.GetMerchandise(otherItems.mid);
                if (skuMerchandise  != null)
                {
                    if (skuMerchandise.AvailableItems <= 0)
                    {
                        sb.Append(OtherItems.Name);
                        sb.Append(Environment.NewLine);
                        IsNotAvailable = true;
                    }
                }
            }

            if (IsNotAvailable)
            {
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "key", 
                    "function Redirect() {location.href = 'homePage.aspx';} 
                    if(confirm('The items : "+sb.ToString()+" will arrive in 1 month. 
                    Do you wish to continue?') == true){Redirect();};", true);
            }
        }
    }

每次我单击该按钮时,它就像什么都没有通过。虽然当我添加断点时 IsNotAvailable 为真,但从不提示前夕。

4

2 回答 2

1

你可以用更简单的方法,

  1. 在设计/单独的脚本文件中定义 javascript 函数,以便它接受项目的名称。例如。我的功能(项目名称)

  2. 在您的 CS 文件中,只需添加对该函数的调用,

    if (IsNotAvailable) { Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "key", "myFunction('" + itemName + "') } }

这将使事情变得更简单,您将能够确认这是一个 Javascript 问题还是您如何通过 CS 文件编写它的问题。

更新:

你的第一个目标应该是确保你的 JS 函数对你有用,所以在任何事情之前,在一个空的 html 文件中添加以下代码并运行它,

<script type='text/javascript'>
ItemNotInStock('item');

function ItemNotInStock(itemName)
{
var message = "The following items are no longer in stock :" + itemName + ". 

Would you like to continue?";

if (confirm(message) == true)
{ location.href = "homePage.aspx"; }

}

如果您正确重定向,则执行下面提到的操作。

在您的设计文件中定义以下 javascript(在本地测试,在 chrome 中为我工作,)

<script type='text/javascript'>
function ItemNotInStock(itemName)
{
var message = "The following items are no longer in stock :" + itemName + ". 

Would you like to continue?";

if (confirm(message) == true)
{ location.href = "homePage.aspx"; }

}

在您的 C# 代码中,添加以下行

if (IsNotAvailable)
        {
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "key", 
string.Format("ItemNotInStock('{0}');", itemName);
        }
    }
于 2012-04-17T02:21:00.950 回答
0

确保您的 JavaScript 代码使用您选择的浏览器的开发人员工具中可用的断点执行,例如Chrome 开发人员工具:断点

顺便说一句:如果您立即将其与下一行一起丢弃,您为什么要创建 Merchandise 的实例?

于 2012-04-17T01:44:28.200 回答