2016-11-15 63 views
0

我使用ASP.NET,我希望能够点击<div>并将背景设置为一种颜色(稍后优先考虑图像)。这<div>由代码生成:ASP.NET通过后面的代码将onclick添加到div

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()是一个JavaScript或C#方法? – renefc3

+0

@ renefc3没关系,都试过。最好是C#。 –

+0

如果使用javascript添加返回false; (“onclick”,“setBackground(); return 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> 

而代码后面的点击事件。

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

每个div都有自己的ID。 –

+0

您可以将ID添加到div的 – VDWWD

+0

问题是,div的数量没有限制。取决于屏幕分辨率x和y轴上正在生成多少。和用户的喜好。 –

0

得到它比我想象的工作更快。这就是我所做的。

我用这个:

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

然后,我通过脚本中使用此:

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

感谢所有的答复

相关问题