0

私は動的にコントロールを作成しています。その1つがラベルコントロールです。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を置き換える必要があると思います。

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

明らかにその順序ではありませんが、それが私がボタンにjavascriptアクションを動的に追加する方法だと思います。

どんなアドバイスでも大歓迎です!ありがとう (:

4

1 に答える 1

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>
于 2012-06-27T17:35:12.087 に答える