在转发器中找到div,并更改它的样式元素

时间:2013-04-16 21:53:44

标签: asp.net vb.net html asprepeater

我有一个看起来像下面的转发器对象

<asp:Repeater id="rptSpecialNotes" runat="server">
                    <headerTemplate><ol type="A"></HeaderTemplate>
                    <itemtemplate>
                                <li>
                                </li>
                        <asp:UpdatePanel ID="udpSpecialNotesRepeater" runat="server" UpdateMode="Always">
                            <ContentTemplate>

                                    <div id="specialNotes" name='<%# Eval("itemId") %>' runat="server">
                                        <asp:imagebutton runat="server"  width="20" class="floatLeft" id="specialNotesItem" imageurl='<%# Eval("ImageUrl") %>'  commandname="specialNotesImageChange" commandargument='<%# Eval("itemId") %>'></asp:imagebutton>
                                        <span class="subject"><p><%# eval("Subject") %></p></span>
                                        <br /><br />
                                        <p><%# Eval("AgendaNote")%></p>
                                        <br />
                                    </div>

                            </ContentTemplate>
                            <Triggers>
                                <asp:AsyncPostBackTrigger ControlID ="followAlongControl" EventName ="Tick" />
                            </Triggers>
                        </asp:UpdatePanel>
                        <asp:Repeater id="specialNotesAttachmentsRepeater" OnItemCommand="specialNotesAttachmentRepeater_ItemCommand" runat="server" datasource='<%# Container.DataItem.Row.GetChildRows("attachmentRelation") %>' >
                            <itemtemplate>
                                <br />
                                <a href='<%# Container.DataItem("attachmentPath") %>'><%# Container.DataItem("attachmentName") %></a>&nbsp;&nbsp;
                                </itemtemplate>
                        </asp:Repeater>
                    </itemtemplate>
                    <footerTemplate></ol></FooterTemplate>
                </asp:Repeater>

我想根据图像按钮的图像更改div“specialNotes”的背景颜色。所以,如果它被检查,div将是灰色的,如果没有,那么我将它留空。

有没有办法在VB代码隐藏中执行此操作?

3 个答案:

答案 0 :(得分:1)

在div标签中添加runat="server"。然后你的代码在后面,你可以使用:

访问该div

udpSpecialNotesRepeater.FindControl("div")

在您的DataBound事件上。

但是在jQuery中执行它会更容易。您只需获取div $("#specialNotes")的ID,然后使用.attr功能更改其背景。

答案 1 :(得分:1)

页面加载后你不必“查找”div,你可以在绑定时执行此操作。我想当你说“如果它被检查”你指的是作为复选框的图像按钮,并且你想根据图像的位置(路径)改变颜色。所以我想在div中这样做:

<div style='<%# doColor(Eval("ImageUrl")) %>'>
    Content in the div
</div>

然后在后面的代码中:

Public Function doColor(img As Object) As String
    If img.ToString() = "MyPath" Then
        Return "background-color:red"
    Else
        Return "background-color:green"
    End If
End Function

如果ImageUrl等于“MyPath”,div的背景将为红色,否则为绿色。

答案 2 :(得分:0)

可以使用:

Control divControl=e.Item.FindControl("divControl");