2010-08-17 2 views
1

MyClass 형식의 일반 목록으로 채워진 ListView가 있습니다. 이 목록의 데이터를 ListView에 쉽게 바인딩 할 수 있습니다. 하지만 반대 방향으로 데이터를 읽는 데 문제가 있습니다.ListView 데이터를 일반 목록으로 읽는 방법

ListView1.DataSource = list; 
ListView1.DataBind(); 

내 ListView에 템플릿 :

List<MyTest> list = new List<MyTest>(); 

마지막으로 나는이 방법을 목록보기에 데이터를 바인딩 : 내가 형 MyClass에의 또한 일반적인 목록을

public class MyClass 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
} 

: 이 내 클래스

<asp:ListView runat="server" ID="ListView1"> 
    <LayoutTemplate> 
    <table runat="server" id="table1" > 
     <tr runat="server" id="itemPlaceholder" ></tr> 
    </table> 
    </LayoutTemplate> 
    <ItemTemplate> 
    <tr id="tr" runat="server"> 
     <td id="td1" runat="server"> 
      <asp:TextBox ID="tb1" runat="server" Text='<%#Eval("id") %>' /> 
     </td> 
     <td id="td2" runat="server"> 
      <asp:TextBox ID="tb2" runat="server" Text='<%#Eval("name") %>' /> 
     </td> 
    </tr> 
    </ItemTemplate> 

어떻게하면 ListView에서 내 목록 목록으로 데이터를 읽을 수 있습니까?

목록에 일반적인 목록을 ListView에 데이터를 읽는 작업은 내가 이것을 테스트 할 수 없습니다 버튼 "GetData의"

답변

1

을 클릭 한 후 시작해야한다,하지만 난이 작동합니다 생각 :

using System.Linq; 

List<MyClass> list = ListView1.DataSource.Cast<MyClass>().ToList(); 

UPDATE를 : 의견에 언급 된 바와 같이, 이는 DataSource을 설정 한 직후에만 작동합니다. 당신이 후 다시 목록을 얻고 싶은 경우에, 시도 :

List<MyClass> list = ListView1.Items 
           .Select(lvi=>lvi.DataItem as MyClass) 
           .ToList(); 
+0

그러나 게시물이 게시되기 전에만 작동합니다. 포스터는 포스트 백 상황에서 ListView에서 목록을 가져 오려고 할 수 있습니다. –

+0

불행히도 내 프로젝트에서 솔루션이 작동하지 않습니다. 데이터가 내 ListView에 올바르게 바인딩되지만 데이터 폼 ListView (포스트 백 이후)를 가져 오려고하면 아무 것도 얻지 못합니다. 각 행의 DataItem 속성에는 null 값이 있으므로 ListView에서 모든 행을 가져 오지만 모두 null 값을 갖습니다. – pit

0

당신은이 같은 업데이트 이벤트에있는 ListViewItem에서 얻을 수 있습니다 :

<asp:ListView ID="ListView1" runat="server" OnItemUpdating="ListView1_ItemUpdating"></asp:ListView> 

void ListView1_ItemUpdating(Object sender, ListViewUpdateEventArgs e) 
{ 
    ListViewItem item = ListView1.Items[e.ItemIndex]; 

    // I think you should also be able to do if you are indeed binding with the type List<MyTest> 
    List<MyTest> item = (List<MyTest>)ListView1.Items[e.ItemIndex]; 
} 

내가 당신에게 당신이 경우 다른 방법을 표시 할 수 있습니다 데이터를 가져 오는 데 필요한 시나리오가 무엇인지 자세히 설명하십시오.

관련 문제