2012-06-27 29 views
0

我動態創建控件,其中之一是標籤控件。如果label.Text.Length大於特定字符計數,我希望顯示更多/更少文本按鈕來縮短/擴展文本。我使用這個函數在使用服務器端代碼時能夠正常工作,但是我想用客戶端代碼來防止發生回發。Javascript的更多/更少的文本按鈕爲asp:標籤

所以我覺得我會動態地添加JavaScript?如果這是可能的,我不確定JavaScript會是什麼樣子。

LinkButton btn_more = new LinkButton(); 
btn_more.ID = "lblCustomControl" + (i + 1).ToString() + "_more"; 
btn_more.ForeColor = System.Drawing.Color.SlateBlue; 
btn_more.Text = " [Show More]"; 
btn_more.Font.Underline = false; 
btn_more.Click += new EventHandler(btn_more_Click); 

LinkButton btn_less = new LinkButton(); 
btn_less.ID = "lblCustomControl" + (i + 1).ToString() + "_less"; 
btn_less.ForeColor = System.Drawing.Color.SlateBlue; 
btn_less.Font.Underline = false; 
btn_less.Text = " [Show Less]"; 
btn_less.Click += new EventHandler(btn_less_Click); 
btn_less.Visible = false; 

我目前正在創建像這樣的按鈕,並將它們添加到包含標籤的表格單元格中。我猜,我有

btn_more/less.OnClientClick = "my javascript stuff" + btn_less/more.ID + "more javascript stuff" + myLabel.ID; 

顯然不是在爲了更換btn_more/less.Click,但我猜這是我怎麼會動態添加JavaScript操作到我的按鈕。

任何建議都會很棒!謝謝(:

回答

2

您也可以javascript這種方式綁定

btn_more.Attributes.Add("onclick", "TestFun(this);"); 

在HTML端

<script language="javascript" type="text/javascript"> 

function TestFun(obj) 
{   
     alert("I am test fun clicked by " + this.id); 
     //for server side label 
     document.getElementById('<%= Label1.ClientID %>').style.display = "none"; 
     document.getElementById('<%= LinkButton1.ClientID %>').style.display = "block"; 

     //For client side html element which do not have attribute runat="server" 
     document.getElementById('Label1').style.display = "none"; 
     document.getElementById('myanchor').style.display = "block"; 
} 

</script> 
+0

是的,你可能還必須:。'btn_more.Attributes.Add( 「點擊」,「TestFun (「+ btn_more.ClientID +」);「);'傳遞被點擊的特定按鈕的ID – Sean

+0

+1」我測試的樂趣「')' – pixelbobby

+0

謝謝@pixelbobby – Adil