2012-11-10 48 views
2

我在JavaScript中有參數的函數,並且我想在Gridview綁定其數據時多次調用此函數。所以我已經把這樣的代碼JavaScript函數不會從代碼隱藏中調用

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    if (((DataRowView)e.Row.DataItem) != null) 
{ 
Page.ClientScript.RegisterStartupScript(this.GetType(),new Random().Next(100).ToString(), 
         "likeStatus('"+argument+"')", true); 
} 
} 

每一次我改變key價值,但這個函數被調用一次。 所以請幫我在gridview綁定的每次迭代中應該怎樣調用函數。

在此先感謝

+1

做出關鍵動態的,因此,在頁面中的每個腳本與註冊一個唯一的ID,它將被調用。註冊相同的密鑰禁止多個腳本註冊。 –

+0

我也使用了隨機密鑰,但它不起作用 –

+0

請每次使用唯一的密鑰... @ BrijeshGandhi –

回答

1

的問題是,如果你需要的隨機性,你需要使用的Random相同的實例,不能創建一個新的每次。你現在正在做的方式可能每次都會產生相同的值。 (另請注意,隨機值與唯一值不同)
爲了解決這個問題,我會做一些不同的事情。

聲明StringBuilder作爲您班級的字段。在RowDataBound事件GridView寫入到建設者的

sb = new StringBuilder(); 
gridView.DataBind(); 

然後:綁定網格之前創建它。

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    if (((DataRowView)e.Row.DataItem) != null) 
     sb.Append("likeStatus('"+argument+"');"); 
} 

終於在PreRender註冊腳本串

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", 
         sb.ToString(), true); 

或者使用一個獨特的價值爲重點,例如Guid.NewGuid().ToString()

相關問題