从.cs文件调用时脚本不起作用

时间:2012-04-17 01:34:32

标签: c# asp.net

我尝试在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为真,从不提示eveb。

2 个答案:

答案 0 :(得分:1)

你可以采用更简单的方式,

  1. 在设计/单独的脚本文件中定义javascript函数,使其接受item的名称。例如。 myFunction的(ITEMNAME)

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

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

  3. 它会使事情变得更简单,您将能够确认这是一个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);
            }
        }
    

答案 1 :(得分:0)

确保使用您选择的浏览器的开发者工具中提供的断点执行JavaScript代码,例如Chrome Developer Tools: Breakpoints

顺便说一句:如果您在下一行立即丢弃商品,为什么要创建商品实例?