2011-08-06 8 views
3

LinqDataSource 및 DataList를 선언적으로 만들고 마크 업에 바인딩했습니다. ItemTemplate과 Edit Template을 만들었습니다.ASP.Net DataList 문제

나는 DataLists onedit 명령과 oncancel 명령을 코드 숨겨진 메소드에 바인딩했습니다.

<asp:DataList ID="MyDataList" runat="server" DataSourceID="LinqDataSource1" RepeatDirection="Horizontal" 
    Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False" 
    Font-Underline="False" HorizontalAlign="Center" RepeatColumns="4" 
    oneditcommand="MyDataList_EditCommand" 
    oncancelcommand="MyDataList_CancelCommand" 
    > 

<ItemTemplate> 
    <div style="margin: 5px;"> 
     <asp:LinkButton Text="Edit" CommandName="Edit" style="float:right" runat="server" /> 
    // Other markup  
    </div> 
</ItemTemplate> 

나는 ItemTemplate을에서의 LinkButton을 클릭

, 그것은 다음과 같은 코드를 실행합니다 :

protected void DataList_EditCommand(object source, DataListCommandEventArgs e) 
     { 
      MyDataList.EditItemIndex = e.Item.ItemIndex; 
      MyDataList.DataBind(); 
     } 

이 잘 작동하고 편집 모드로 전환하여 DataList에서 선택한 항목을 넣습니다. 편집 템플릿 :

<EditItemTemplate> 
     <div style="margin: 5px;"> 
      <asp:LinkButton Text="Cancel" style="float:right" 
       runat="server" CommandName="cancel" CausesValidation="false"/> 
     //other markup 
     </div> 
    </EditItemTemplate> 

나는이 (중단 점 적중되지 않습니다) 뒤에 코드에서 방법을 발생하지 않습니다, (가) 편집 템플릿에 취소 버튼을 클릭합니다.

의 실행 얻을 결코 취소하지 않을 때 실행해야하는 코드, 그래서 정상적인 읽기 모드로 편집 모드를 다시 종료 할 수 없습니다

protected void MyDataList_CancelCommand(object source, DataListCommandEventArgs e) 
    { 
     PhotoDataList.EditItemIndex = -1; 
     PhotoDataList.DataBind(); 
    } 

사람이 이것에 대한 이유를 생각할 수 있는가?

---- UPDATE

내가이 ItemCommand 이벤트에 바인딩 알고있는대로, 작동하지 않습니다 DataList에에 이벤트 바로 두 번째 발사 것 같다, 그리고 가로 챌 거라고 DataListCommandEventArgs.CommandName 속성을 사용하고이를 기반으로 작업을 수행하십시오. 링크 편집 단추를 클릭하면 ItemCommand 메서드가 실행되고 코드 본문은 전혀 나타나지 않지만 두 번째로 링크 편집 단추를 클릭하면 ItemCommand 메서드가 적용되지 않습니다.

+0

안녕하세요 벤 - 브라우저에서 피들러를 두드리면 여기에 무슨 일이 일어나고 있는지 알 수있는 기회가 있습니까? –

+1

첫 번째 명령이 실행 된 후 HTML이 생성 된 것을 보았습니까? 태그의 명령 속성이 여전히 있습니까? –

답변

0

나는, 나는이 데모 코드 및 모든 이벤트 및 템플릿은 괜찮 았는데 실행 문제 복제 할 수 없습니다 :

How to: Allow Users to Edit Items in DataList Web Server Controls

당신이 당신의 이벤트 로그에 오류가 있습니까를? 또한 정의 된 DataKeyField가 보이지 않습니다. 어떻게 데이터를 선택합니까?

1

당신하여 DataList의 이름은 "MyDataList"

하지만 이벤트가 PhotoDataList를 호출 취소!

protected void MyDataList_CancelCommand(object source, DataListCommandEventArgs e) 
    { 
     PhotoDataList.EditItemIndex = -1; 
     PhotoDataList.DataBind(); 
    }