我正在动态创建控件,其中之一是标签控件。如果label.Text.Length大于某个字符数,我希望显示“更多/更少文本”按钮以缩短/扩展文本。使用服务器端代码时,此功能可以正常工作,但是,我想使用客户端代码来执行此操作,以防止发生回发。
所以我认为我将以某种方式动态添加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.Click与
btn_more/less.OnClientClick = "my javascript stuff" + btn_less/more.ID + "more javascript stuff" + myLabel.ID;
显然不是按照这个顺序,但是我猜测这就是我将动态地向按钮添加JavaScript操作的方式。
任何建议将不胜感激!谢谢 (:
最佳答案
您可以通过这种方式绑定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>