2012-04-17 42 views
0

我是tryong在GridView的Row_Command事件中執行以下操作。但是彈出框永遠不會出現,我嘗試過很多不同的方式......但是沒有運氣。如果有人能看到這個問題,我會非常欣賞一個指針。從.cs文件調用時腳本不能正常工作

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

每次我按一下按鈕,它只是通過像什麼..從不提示eveb儘管當我添加一個斷點IsNotAvailable是真的。

回答

1

你可以去一個更簡單的方法,

  1. 定義JavaScript函數在設計/單獨的腳本文件,以使其接受項目的名稱。例如。 myFunction的(ITEMNAME)

  2. 而在你的CS文件,只需添加一個調用該函數,

    如果(IsNotAvailable) { Page.ClientScript.RegisterClientScriptBlock(this.GetType(), 「鑰匙」, 「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在您的設計文件(測試在本地,在鉻工作對我來說,)

<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); 
     } 
    } 
+0

我很喜歡javascript,你介意提供一個js部分的小例子嗎? – user710502 2012-04-17 02:41:01

+0

這是好嗎?但事情是,我發送一個字符串生成器?函數(itemName){ var r = confirm(「以下項目不再有貨:」+ itemName.toString()+「。是否要繼續?」);如果(r == true) location.href =「homePage.aspx」; } } – user710502 2012-04-17 02:48:14

+0

不,你不會發送StringBuilder到JavaScript,讓我更新我的答案。 – 2012-04-17 02:49:31

0

確保您的JavaScript代碼通過使用您所選擇的瀏覽器的開發者工具可用的斷點執行,像Chrome Developer Tools: Breakpoints

BTW:你爲什麼要創建商品的實例,如果你立刻下一個丟棄線?

+0

耶將照顧商品的事情。什麼可以告訴我?,我不是很好的JavaScript和不知道如何解決它反正..如果它正在執行。此外,如果我拿出「+ sb.ToString()+」它的工作原理.. – user710502 2012-04-17 01:50:30

+0

如果它工作,如果你刪除'「+ sb.ToString()+」'部分那麼你的字符串(=項目名稱)包含字符打破了JavaScript,在你的情況下'(撇號) – CodeZombie 2012-04-17 01:57:02

+0

唯一可用的測試是test3。我不確定那將如何破壞。 (多數民衆贊成唯一的名字) – user710502 2012-04-17 02:00:45