2013-02-16 2 views
2

이 코드에서는 "Label"ID로 "Label"컨트롤을 가져 오려고하지만이 작업은 현재 "AuthorUserID"필드를 엔터티 데이터 원본에서 가져 오려고합니다. 내가 할 수 있음을 알고 있습니다. this with <%# Eval("AuthorUserID" %>)하지만이 필드는 메소드의 코드에서 "ChatListView_ItemDataBound"메소드의이 경우에 사용합니다.Eval 코드 숨김

코드 뒤에 현재 필드 ("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> 
+2

왜이를 통과하고 싶은가? 그냥 포맷하거나 조건을 수행하고 싶다면 aspx의 MyFunc에서 <% # MyFunc (Eval ("PostDate")) %>와 같은 함수를 작성하고 string MyFunc (object dt) {} – Moons

+0

현재 로깅 된 사용자 ID가 콘텐츠의 작성자 ID와 동일한 경우 e.Item.FindControl ("Label")을 visible = true로 설정하려고합니다. 그러나 당신의 생각은 좋은 것처럼 들리겠습니다. – TheChampp

+0

'DataBound' 컨텍스트에있는 경우 마크 업 파일에서와 같이 코드 뒤에 'Eval ("AuthorUserID")'를 사용할 수 있습니다. –

답변

0

수 있습니다 우리의 의견에 따라 경찰이 코드는

가 반환됩니다 페이지의 일부 속성을 작성 도움이 될 수는 사용자 ID와 말

<ItemTemplate> 

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

</ItemTemplate> 
0

당신은 당신이 class object 또는 datatable을 경계하는 경우 당신이 데이터를 주조 처리해야하는 데이터 테이블을 경계하는 경우 는 내가 모르는 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 ; 
      } 
     } 
    } 

주를 사용하여 행 데이터에 도달 할 수있는 DataItem

에 저장 기본적으로 e.Item.DataItem은에서 더 많은 정보를보기 위해 데이터 소스

에서 오는 데이터를 보유 :

,
0

당신의 ListView

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

데이터 키를 추가하고

string AuthorUserID = ChatListView.DataKeys[e.Item.DataItemIndex].Value.ToString(); 
012 뒤에 코드에서 해당 키를 해보
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 

}