2

このコードでは、ID「ラベル」でコントロール「ラベル」を取得しようとしていますが、これは機能しますが、エンティティデータソースから現在の「AuthorUserID」フィールドを取得したいのですが、これを実行できることはわかっていますが、これ<%# Eval("AuthorUserID" %>) を取得したいコード ビハインド メソッドのフィールド (この場合は「ChatListView_ItemDataBound」メソッド)。

コードビハインドで現在のフィールド (「AuthorUserID」) を取得する方法は?

分離コード:

protected void ChatListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        if (e.Item.FindControl("Label") != null)
        {
        }
    }
}

マークアップ:

 <asp:ListView ID="ChatListView" runat="server" DataSourceID="EntityDataSourceUserPosts" OnItemDataBound="ChatListView_ItemDataBound">
    <ItemTemplate>
        <div class="post">
            <div class="postHeader">
                <h2><asp:Label ID="Label1" runat="server" 
                    Text= '<%# Eval("Title")  + " by " + this.GetUserFromPost((Guid?)Eval("AuthorUserID")) %>' ></asp:Label></h2>
                    <asp:Label ID="Label" runat="server" Text="" Visible="True"></asp:Label>
                <div class="dateTimePost">
                   <%# Eval("PostDate")%>
                </div>
            </div>
            <div class="postContent">
                <%# Eval("PostComment") %>
            </div>
        </div>
    </ItemTemplate>
</asp:ListView>
4

4 に答える 4

3

これを試して。マークアップを次のように変更

<asp:Label ID="Label" runat="server" 
        Text="" 
        Visible='<%# CheckIfAuthorIsUser(Eval("AuthorID")) %>'>
</asp:Label>

コードビハインドでは、これを行います

protected bool CheckIfAuthorIsUser(object authorID)
{
    if(authorID == null){ return false;}
    //else compare the passed authorid parameter with the logged in userid and return the appropriate boolean value

}
于 2013-02-16T09:05:34.327 に答える
0

私たちのコメントによると、このコードが役立つかもしれません

ユーザーIDを返し、次に

<ItemTemplate>

  <asp:Label ID="lbl" Visible='<%# UserID == Convert.ToInt32(Eval("AuthorID")) %>' />

</ItemTemplate>
于 2013-02-16T08:54:14.897 に答える
0

を使用して行データにアクセスできますListViewItemEventArgs e

protected void ChatListView_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            if (e.Item.FindControl("Label") != null)
            {
               var AuthorUserID = (string)e.Item.DataItem.e.Item.DataItem.AuthorUserID ;
            }
        }
    }

注意:class objectバウンドしたのか、バウンドしたのか わかりません。datatableデータテーブルをバウンドした場合は、に格納されているデータのキャストに注意する必要があります。DataItem

基本的に、e.Item.DataItemデータソースからのデータを保持します

詳細については、以下を参照してください。

于 2013-02-16T08:59:46.700 に答える
0

これを試して

ListView にデータ キーを追加します。

<asp:ListView ID="ChatListView" runat="server" OnItemDataBound="ChatListView_ItemDataBound"
        DataKeyNames="AuthorUserID">

コードビハインドでそのキーを取得します

string AuthorUserID = ChatListView.DataKeys[e.Item.DataItemIndex].Value.ToString();
于 2013-02-16T09:02:28.650 に答える