2010-03-09 9 views
3

내 목록보기에서 레코드를 편집 할 수있는 기능을 제공한다고 생각하는 다음 코드가 있지만 편집을 클릭하면 포스트 백을 가져올 수 있지만 아무것도 편집 할 수 없습니다. . 내가 뭐 잘못하고 있니?ListView에서 편집 할 수 없음

<asp:ListView ID="lv_Personnel" runat="server" OnItemEditing="lv_Personnel_ItemEditing"> 
      <LayoutTemplate> 
       <table cellpadding="2" border="1" runat="server" id="tbl_Personnel"> 
        <tr id="headerRow" runat="server"> 
         <th> 
         </th> 
         <th> 
          Level of Staff 
         </th> 
        </tr> 
        <tr runat="server" id="itemPlaceholder" /> 
        <tr runat="server" id="insertPlaceholder" /> 
       </table> 
      </LayoutTemplate> 
      <ItemTemplate> 
       <tr runat="server"> 
        <td> 
         <asp:LinkButton ID="btnEdit" runat="server" Text="Edit" CommandName="Edit" /> 
        </td> 
        <td> 
         <%# Eval("LineDescription")%> 
        </td> 
       </tr> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <tr runat="server" style="background-color: #ADD8E6"> 
        <td> 

        </td> 
        <td> 
         Level of Staff: 
         <asp:TextBox ID="tb_LevelOfStaff" runat="server" Text='<%# Eval("LineDescription") %>' /> 
        </td> 
       </tr> 
      </EditItemTemplate> 
     </asp:ListView> 

답변

-1

필자는 ListView 선언에 OnItemEditing 이벤트를 추가하고 기능을 백업 할 필요가있는 것처럼 보입니다. aspx 파일의 변경 사항을 반영하기 위해 위에서 코드 스 니핏을 업데이트했습니다.

1

ListView를 데이터 바인딩하고 있습니까? databound가 아니라면 ItemEditing 이벤트를 처리하여 편집 할 레코드를 수동으로 지정해야합니다.

protected void MyListView_ItemEditing(object sender, ListViewEditEventArgs e) 
{ 
    ListView1.EditIndex = e.NewEditIndex; 
     // Re-databind here 
} 
+0

페이지로드시 데이터 바인딩. 다른 곳에서는해야합니까? 레코드를 잘 표시하고 편집 할 수 없습니다. –

0

ViewState가 해제되어 있지 않은 이상 모든 포스트 백에서 데이터 바인딩을 지정하지 마십시오.

private void Page_Load() 
{ 
    if (!IsPostBack) 
    { 
     //databind 
    } 
} 
+0

그래, 그게 내가하는 일이야. –

관련 문제