2012-03-29 21 views
0

我有一個網格。首先,網格行填充了行ID(即「tr」id),但當點擊按鈕(.Net Ajax)頁面被刷新時。然後網格行ID將消失。這個問題怎麼解決。我的意思是當網格通過Ajax調用刷新時,我需要保留行ID。隨着ajax的調用,網格行ID丟失

ajax調用更清晰,網格行丟失了id。我需要保留這個價值。對此有任何方法嗎?請幫幫我。

protected void grd_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
    e.Row.Attributes.Add("onclick", "javascript:ChangeRowColor(" + e.Row.ClientID + ")"); 
} 
} 

以上是代碼,使用Ajax方法刷新之後,它的行ID獲取空。所以,在運行時我得到像ID一樣的js錯誤沒有定義。

回答

2

你是說e.Row.ClientID在回發後爲空或爲空?相反,通過該行的ID,用this只是通過該行本身:

e.Row.Attributes.Add("onclick", "javascript:ChangeRowColor(this);"); 

通過這樣做,您不再需要使用document.getElementById,因爲相關的元素將被作爲參數傳遞:

編輯:這是一個快速的&骯髒的解決方案,但您可以使用全局變量來跟蹤以前選擇的行。

var previousRow; 

ChangeRowColor = function(row){ 
    if (previousRow){ 
     previousRow.style.background = 'white'; 
    } 
    row.style.background = "red"; 
    previousRow = row; 
} 
+0

謝謝,它的工作..但現在我面臨着上下一行的點擊,我想跟蹤以前的事件id.Please幫我先生.. – Justinonday 2012-03-29 14:10:53

+0

你是說,你要跟蹤的新問題之前點擊過的行? – 2012-03-29 14:12:03

+0

是的。我正在尋找。在這裏我使用了一個網格,當我點擊時,我想將行顏色更改爲新顏色。稍後當我點擊下一行時,前面的行應該變成舊的顏色,並且當前行會變成新的顏色,並且如 – Justinonday 2012-03-29 14:18:26