2011-12-07 3 views
2

div id = "comments" 이 한 번에 10 개의 주석을 표시하고 있습니다. 사용자가 다음 댓글을 보려는 경우 다음 10 개의 댓글을 수집하는 버튼 하나를 제공했습니다. 이 다음 코멘트를 위해 나는 다른 div morecomments에 나머지 10 개의 코멘트를 표시하기 위해 부분 뷰를 만들었습니다.어떻게 부분보기 결과를 div에 추가 할 수 있습니까?

내 문제는 내가 다음 10 개의 댓글을 표시 할 때 모든 20 개의 댓글을 표시하지만 전체 댓글 div가 새로 고침되고, 전체 댓글 div를로드하지 못하게하는 방법입니다.

내 코드는 여기에 있습니다 :

<div id="comments"> 

// Display Comments 

<div id="moreButton"> 
     <input type="submit" id="more" class="morerecords" value="More Post" /> 
</div> 

</div> 

<div id="morecomments"> 

</div> 

JQuery와 ::

$('.morerecords').livequery("click", function (e) { 
      // alert("Showing more records..."); 
      var next = 10;    
      var url = '@Url.Action("ViewMore", "Home")' 
      var data = { nextrecord: next}; 
      $.ajax({ 
       type: "POST", 
       url: url, 
       data: data, 
       success: function (result) { 
       $("#morecomments").html(result); 
       } 
      }); 

     }); 

내가 10 개의 코멘트 처음과 무엇입니까 위의 코드에서 그것을 것 더 포스트 버튼을 사용자가 클릭 10 개의 댓글과 다음 10 개의 댓글을 보여주세요. 하지만 전체 사업부가 새로워지고 있습니다.

이전 변경 사항에 영향을주지 않고 사용자 의견을 얻을 수 있도록 변경해야 할 사항은 무엇입니까?

등 50 ~ 60 자신의 섹션 후 모든 의견을 더 올리기 버튼 클릭에 표시하기 10 +해야하고 ...

가 어떻게 그렇게 할 수를 가진

한다고 가정 사용자?

$("#morecomments").html(result); 

.html 중에서 ("someValue와"

$('.morerecords').livequery("click", function (e) { 
     var next = 10;    
     var url = '@Url.Action("ViewMore", "Home")' 
     var data = { nextrecord: next}; 
     var older_records = $("#morecomments").text(); 
     $.("comments").append(older_records); //When you will get next record data, older data will be filled in comment div. 
     $.ajax({ 
      type: "POST", 
      url: url, 
      data: data, 
      success: function (result) { 
      $("#morecomments").html(result); 
      } 
     }); 

    }); 
+0

'$ ("#의 morecomments").추가 (결과);'이거 놔둬 – Val

+0

데이터에 액세스하려면 무엇을 사용합니까? 엔티티 프레임 워크, NHibernate 등? – tugberk

+0

@tugberk : Entity Framework를 사용하고 있습니다. – Bhargav

답변

0

당신은 당신의 기록을 필터링하고 코멘트 DIV에 넣어 필요) 은 내용을 삭제하고 제공된 모든 매개 변수로 채 웁니다. 이 일을보십시오 :

$("#morecomments").html($("#morecomments").html() + result); 

심지어 쉽게 :

$("#morecomments").append(result); 

난 당신이 문자열을 전달하는 경우이 작동 알고, 부분보기는 기본적으로 HTML 문자열입니다. 부분보기로 가져온 태그와 충돌 문제가 있는지 나는 모른다. 어느 쪽이든, 이것은 에 대한 가장 쉬운 방법입니다. 대신에을 입력하고을 써주세요.

+0

'$ ("# morecomments") text();'.html();'은 더 신뢰할 만합니까? 그들은 원하는 결과가 아니라면 태그가있을 수 있습니다 : – Val

+0

$ ("# morecomments"). text() 메소드는 더 많은 요소 div를 가져 오는 데 사용됩니다. 코드를 다시 확인하십시오. 그것은 세 가지 일을하고 있습니다. 1. 더 많은 div에서 내용을 읽으십시오. 2. 코멘트 div에 추가하십시오. 3. morecomment div에 새 설명을 작성하십시오. 나는 그것이 얇아 질 것이다. –

+0

사실이 페이스 북과 같은 전체 섹션을 구현 중이며이 댓글 섹션의 사용자는 비디오 URL뿐만 아니라 주석도 게시 할 수 있습니다. 내 의견 섹션에서 비디오를 재생하고 버튼 비디오를 클릭하여 더 많은 게시물을 볼 때 .. 재생을 멈 춥니 다. 나는 나머지 코멘트를 얻고 있습니다.하지만 비디오 재생 또는 코멘트 div에 영향을 미치지 않아야합니다. – Bhargav

0

오류는에 있습니다 ... 귀하의 코드는이를 좋아한다

0

당신이 (당신이) 엔티티 프레임 워크를 사용하는 경우, 당신은 다음과 같은 것을 사용할 필요 : 이것은하지만 JSON을 반환 있지만

public JsonResult Get(
    //this is basically giving how many times you get the comments before 
    //for example, if you get only one portion of the comments, this should be 1 
    //if this is the first time, this should be 0 
    int pageIndex, 
    //how many entiries you are getting 
    int pageSize) { 

    IEnumerable<Foo> list = _context.Foos; 
    list.Skip(PageIndex * PageSize).Take(pageSize); 

    if(list.Count() < 1) { 
     //do something here, there is no source 
    } 

    return Json(list); 
} 

당신이 아이디어를 얻을 것입니다. 필요에 따라 수정할 수 있습니다.

페이지 매김에도이 방법을 사용할 수 있습니다. 여기에 대한 도우미입니다

https://bitbucket.org/tugberk/tugberkug.mvc/src/69ef9e1f1670/TugberkUg.MVC/Helpers/PaginatedList.cs

+0

감사합니다. 이제 저는 페이지 매김을 사용하지 않을 것입니다. coz 내 전체 구현을 변경해야합니다. – Bhargav

+0

페이지 매김이 아닙니다. 의견을 부분별로 얻고 싶습니까? 이 메서드는 동일한 주석을 다시 얻지 못하도록합니다. – tugberk

관련 문제