2015-01-13 199 views
0

試圖在超鏈接單擊事件中添加Javascript。 在這裏,我得到超鏈接的名稱,但是當我嘗試點擊超鏈接時沒有任何反應。將javascript添加到超鏈接控件

tblCell = new HtmlTableCell(); 
List<string> liEmailIdsForCC = new List<string>(); 
if(some condition) 
{ 
liEmailIdsForCC .add("someitem"); 
} 

HyperLink hpOwnerName = new HyperLink(); 
hpOwnerName.Text += string.Format("({0}) ", "FullName"); 
string args = string.Format("{0},{1}" 
          , this 
          , liEmailIdsForCC       
          ); 

var onClick = String.Format("javascript:OnNameClick({0});return false;", args); 
hpOwnerName.Attributes.Add("onclick", onClick); 
tblCell.Controls.Add(hpOwnerName); 

現在,在這個JavaScript,我只是想提醒的第一個項目在列表中

function OnNameClick(sender, list) { 
    alert(li[0]); 
} 
+0

但是li [0]在哪裏呢?它不會像參數一樣發送。 –

+0

你爲什麼要發送逗號分隔的字符串作爲參數?你也將'this'轉換爲一個字符串,這不會是你想要的。正如@WilfredoP所述,在你的javascript函數'li'中不存在。我認爲你的意思是'list' – paqogomez

+0

是的,列表[0]。但是,點擊超鏈接沒有任何反應 – user1989

回答

1

的客戶端腳本將無法訪問服務器端的列表。我不知道liEmailIdsForCC.ToString會返回什麼,但我不認爲它不會成爲JavaScript可以使用的東西。如果你想訪問字符串列表,我會把它轉換成JavaScript數組。像下面這樣。儘管你可能應該逃避絃樂。

tblCell = new HtmlTableCell(); 
List<string> liEmailIdsForCC = new List<string>(); 
if(some condition) 
{ 
    liEmailIdsForCC.add("someitem"); 
} 

HyperLink hpOwnerName = new HyperLink(); 
hpOwnerName.Text += string.Format("(FullName) ", "FullName"); 

string listJSArray = string.Format("['{0}']", string.Join("', '", liEmailIdsForCC.ToArray()); 

var onClick = string.Format("OnNameClick(this, {0}); return false;", listJSArray); 
hpOwnerName.Attributes.Add("onclick", onClick); 
tblCell.Controls.Add(hpOwnerName); 

// javascript code... 
function OnNameClick(source, list) { 
    alert(list[0]); 
} 
+0

我需要pass'this;因爲我有幾個更多的參數 – user1989

+0

,因爲你使用它,指的是類,而不是導致它被調用的對象。我已經修改它來傳遞調用它的html元素,這是我認爲「源代碼」通常在ASP.NET中。 – Eric