2009-01-19 29 views
2

我在我創建的ASP.NET項目中創建了一個Table的子類。該表使用一個類來格式化並創建TableRows和TableCells,我們可以將其稱爲RowCreator。因此,MyTable調用rowCreator.CreateRow()並返回一個TableRow,其中有很多好東西。如何爲我的ASP.NET TextBox獲取正確的ClientID?

在這個TableRow中,有一個TextBox應該在RowCreator類添加的onblur事件上觸發javascript方法。

textBox.Attributes.Add("onblur", "javascriptMethod('" + textbox.ClientID + "');");

我也嘗試創建文本框的子類,實現了增加onblur事件的方法:

Attributes.Add("onblur", "javascriptMethod('" + this + "');")

不工作。該ID只是文本框子類的名稱空間。

和JavaScript的方法很簡單:

function javascriptMethod(boxId) { alert(boxId); }

麻煩的是,我猜這是因爲TextBox控件還沒有被添加到控件集合然而,該boxId不是正確的客戶端ID。它與服務器端ID相同。有沒有辦法獲得正確的ID,而不必使用Controls.Add在頁面上添加行?還有其他建議嗎?

我甚至會這樣做的原因是從javascript函數中讀取文本框內容,只要它被更改。也許有更好的方法來做到這一點?

回答

7

您可以將JavaScript調用改成這樣:

function javascriptMethod(textbox) { alert(textbox.id); } 

這樣,你就不需要使用的ClientID的:

textBox.Attributes.Add("onblur", "javascriptMethod(this);"); 

然後你就可以在你的JavaScript方法訪問文本框文本框控件。

+0

一個簡單而優雅的解決方案。 – Raithlin 2009-01-19 10:44:39

相關問題