1

次のように、リピーター内にDIVがあります。

    <asp:Repeater ID="topicView" runat="server" OnItemCommand="Delete_ItemCommand">
    <ItemTemplate>
    <table width="945px" cellpadding="0" cellspacing="0" border="0" class="post-table">
        <tr>
            <td colspan="2">
                <div class="post-info">
                    <div class="post-info-left"><%#DataBinder.Eval(Container.DataItem, "PostDate")%></div>
                    <div class="post-info-right">#<%#DataBinder.Eval(Container.DataItem, "PostID")%></div>
                    <div class="clear"></div>
                </div>
            </td>
        </tr>
        <tr>
            <td class="post-left">
                <p><strong><%#DataBinder.Eval(Container.DataItem, "Username")%></strong></p>
            </td>
            <td class="post-right">
                <p><%#DataBinder.Eval(Container.DataItem, "PostBody")%></p>
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <div class="post-edit">
                    <p id="postEditAdmin" runat="server" visible="false"><a class="fancybox.iframe fancybox" href='editpost.aspx?postID=<%#DataBinder.Eval(Container.DataItem, "PostID")%>'>Edit</a> | <asp:LinkButton ID="deleteBtn" runat="server" Text="Delete" CommandName="Delete" OnClientClick="javascript:if(!confirm('Delete this information? this will delete permanently'))return false;" CommandArgument='<%#DataBinder.Eval(Container.DataItem, "PostID")%>' /></p>
                    <p id="postEdit" runat="server" visible="true"><i>You must be an admin to be able to edit or delete a post</i></p>
                </div>
            </td>
        </tr>
    </table>
    </ItemTemplate>
</asp:Repeater>

postEditAdmin.Visibleをtrueに設定し、postEdit.Visibleをfalseに設定する方法を教えてもらえますか?ページの読み込みで取得されていません。

また、ifステートメントによって変更されることに注意してください。これは私がこれまでに持っているものです:

        if (Session["role"].ToString() == "2")
        {
            postEditAdmin.Visible = true;
            postEdit.Visible = false;
        }
4

2 に答える 2

3

バインドプロセス中にdivを表示または非表示にする必要があります。リピーターにイベントを追加します。

aspxページで、html側に追加

 <asp:Repeater ID="topicView" runat="server" OnItemCommand="Delete_ItemCommand" OnItemDataBound="topicView_ItemDataBound">

ファイル追加の背後にあるサーバー側のコード

    void topicView_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    {
         if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
         {
           // Show or hid div here
           System.Web.UI.HtmlControls.HtmlContainerControl postEditAdmin = (System.Web.UI.HtmlControls.HtmlContainerControl)e.Item.FindControl("postEditAdmin");

           System.Web.UI.HtmlControls.HtmlContainerControl postEdit= (System.Web.UI.HtmlControls.HtmlContainerControl)e.Item.FindControl("postEdit");

          if (Session["role"].ToString() == "2")
          {
              postEditAdmin.Visible = true;
              postEdit.Visible = false;
          }    
        }
    }
于 2012-05-23T04:54:48.903 に答える
0

postEditAdminとpostEditのパーツをPlaceHolderコントロール内にラップし、その可視性を設定します。

<div class="post-edit">
    <asp:PlaceHolder id="postEditAdmin" runat="server" Visible="false">
         <p>...</p>
    </asp:PlaceHolder>

データバインディングを使用して可視性を制御し、コードビハインドを回避することもできます。

<asp:PlaceHolder Visible="<%# Eval('PostEditAdminVisible') %>">
于 2012-05-23T12:42:58.363 に答える