0

グリッドビューの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はtrueになりますが、evebのプロンプトは表示されません。

4

2 に答える 2

1

あなたはもっと簡単な方法で行くことができます、

  1. アイテムの名前を受け入れるように、design/separateスクリプトファイルでjavascript関数を定義します。例えば。myFunction(itemName)

  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

Chrome Developer Tools:Breakpointsなど、選択したブラウザの開発者ツールで利用可能なブレークポイントを使用して、JavaScriptコードが実行されることを確認してください。

ところで:次の行ですぐに破棄するのに、なぜMerchandiseのインスタンスを作成するのですか?

于 2012-04-17T01:44:28.200 に答える