手记

onmouseover和onmouseout

如果你曾看过这篇,http://www.cnblogs.com/insus/articles/1411057.html ,它是在GridView控件中演示,但是它的方法在Repeater控件是无法复制的。
由于看到论坛上有网友问及,花上一点点时间做了Repeater控件的演示。首先看看效果(动画结束,尝试刷新网页):


 

为了能在Repeater控件上实现onmouseover和onmouseout样式,Insus.NET想只要控到表的行即可,在Repeater控件的OnItemCreated事件中去实现,需要分别写好ItemTemplate模版与AlternatingItemTemplate模版,另外还注意的地方,就是把tr转为web控件,这样好在cs好找到。

.aspx(部分):

View Code  <asp:Repeater ID="Repeater1" runat="server" OnItemCreated="Repeater1_ItemCreated">
            <HeaderTemplate>
                <table border="1" cellpadding="3" cellspacing="0">
                    <tr>
                        <td>
                            MediaTypeId
                        </td>
                        <td>
                            TypeName
                        </td>
                        <td>
                            Description
                        </td>
                        <td>
                            IsActive
                        </td>
                        <td>
                            CreateDate
                        </td>
                    </tr>
            </HeaderTemplate>            
            <ItemTemplate>
                <tr id="itl" runat="server">
                    <td>
                        <%# Eval("MediaTypeId") %>
                    </td>
                    <td>
                        <%# Eval("TypeName")%>
                    </td>
                    <td>
                        <%# Eval("Description")%>
                    </td>
                    <td>
                        <%# Eval("IsActive")%>
                    </td>
                    <td>
                        <%# Eval("CreateDate")%>
                    </td>
                </tr>
            </ItemTemplate>
            <AlternatingItemTemplate>
                <tr id="att" runat="server">
                    <td>
                        <%# Eval("MediaTypeId") %>
                    </td>
                    <td>
                        <%# Eval("TypeName")%>
                    </td>
                    <td>
                        <%# Eval("Description")%>
                    </td>
                    <td>
                        <%# Eval("IsActive")%>
                    </td>
                    <td>
                        <%# Eval("CreateDate")%>
                    </td>
                </tr>
            </AlternatingItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>

 

.aspx.cs(部分),有一点需要留意的是,首先获取行的BackColor,这样好的Mouse out时,回复原来的Color:

View Code  protected void Repeater1_ItemCreated(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item)
        {
            if (e.Item.FindControl("itl") != null)
            {
                HtmlTableRow htr_itl = (HtmlTableRow)e.Item.FindControl("itl");
                ApplyStyle(htr_itl, htr_itl.BgColor);
            }
        }

        if (e.Item.ItemType == ListItemType.AlternatingItem)
        {
            if (e.Item.FindControl("att") != null)
            {
                HtmlTableRow htr_att = (HtmlTableRow)e.Item.FindControl("att");
                ApplyStyle(htr_att, htr_att.BgColor);
            }
        }
    }

    private void ApplyStyle(HtmlTableRow htr, string trBackColor)
    {
        string onmouseoverStyle = "this.style.backgroundColor='Peachpuff'";
        string onmouseoutStyle = "this.style.backgroundColor='@BackColor'";

        htr.Attributes.Add("onmouseover", onmouseoverStyle);
        htr.Attributes.Add("onmouseout", onmouseoutStyle.Replace("@BackColor", trBackColor));

    }

 

 

0人推荐
随时随地看视频
慕课网APP