2016-11-15 7 views
0

私はASP.NETを使用しています。<div>をクリックし、背景を色(おそらく後で画像)に設定したいと考えています。この<div>は、コードによって生成されます。ASP.NETはonClickをコードの背後にあるコードに変換する

public void generate (int[] _blocks, int _width, int _height, int _distance) { 
     int HorizontalBlocks = _blocks[0]; 
     int VerticalBlocks = _blocks[1]; 
     int top = 0; 
     int left = 0; 

     for (int i = 0; i < VerticalBlocks; i++) { 
      for (int x = 0; x < HorizontalBlocks; x++) { 
       System.Web.UI.HtmlControls.HtmlGenericControl Div = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV"); 

       Div.ID = "Box_" + x + "_" + i; 
       Div.Style.Add(HtmlTextWriterStyle.Width, _width.ToString() + "px"); 
       Div.Style.Add(HtmlTextWriterStyle.Height, _height.ToString() + "px"); 
       Div.Style.Add(HtmlTextWriterStyle.Top, top.ToString() + "px"); 
       Div.Style.Add(HtmlTextWriterStyle.Left, left.ToString() + "px"); 
       Div.Style.Add(HtmlTextWriterStyle.BackgroundColor, "#848484"); 
       Div.Style.Add(HtmlTextWriterStyle.Position, "absolute"); 
       Div.Style.Add(HtmlTextWriterStyle.Cursor, "pointer"); 
       Div.Attributes.Add("runat", "server"); 
       Div.Attributes.Add("onclick", "setBackground();"); 

       grid.Controls.Add(Div); 

       left += _width + _distance; 
      } 

      left = 0; 
      top += _height + _distance; 
     } 
    } 

私は方法setBackground();を作成しようとしたが、私は現在、クリックされた<div>の背景を設定する方法を見つけ出すように見えることはできません。

+1

setBackground(用

 <script> function div_click(clicked_id) { alert(clicked_id); } </script> 

おかげで)javascriptやC#の方法とは? – renefc3

+0

@ renefc3それは問題ではない、両方を試みた。好ましくはC#。 –

+0

javascriptを使用している場合はfalseを返します。 Div.Attributes.Add( "onclick"、 "setBackground(); false false;"); – renefc3

答えて

0

Panelコントロールは、その内容を<div>の中にラップするコントロールです。そして、コードの背後からプロパティを変更することができます。

<asp:Panel ID="Panel1" runat="server"> 

    <%-- html content here --%> 

</asp:Panel> 

コードビハインド。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Panel1.BackColor = Color.Red; 
} 

また、背景色を変更したい場合などにこれを行うことができます。

<style> 
    .myDiv { 
     width: 100px; 
     height: 100px; 
     border: 1px solid black; 
     background: inherit; 
    } 
</style> 

<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click"><div class="myDiv"></div></asp:LinkButton> 
<asp:LinkButton ID="LinkButton2" runat="server" OnClick="LinkButton1_Click"><div class="myDiv"></div></asp:LinkButton> 
<asp:LinkButton ID="LinkButton3" runat="server" OnClick="LinkButton1_Click"><div class="myDiv"></div></asp:LinkButton> 

コードの後ろにclickイベントがあります。

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    LinkButton linkButton = sender as LinkButton; 
    linkButton.BackColor = Color.Green; 
} 
+0

すべてのdivには独自のIDがあります。 –

+0

divのIDにidを追加できます – VDWWD

+0

問題は、divの量に制限がないことです。 x軸とy軸に生成されている画面の解像度に応じて異なります。そしてユーザーの好み。 –

0

私は思ったよりも速く動作しました。これは私がやったことです。

私はこの使用:

   Div.Attributes.Add("onclick", "div_click(this.id)"); 

をそして私は、スクリプトを経由してこれを使用する:すべての返信

関連する問題