2017-01-02 9 views
0

WEBAPIとLINQを使用してSQLからデータを取得しています。クリックすると、ページに[Load More]ボタンが表示されます。レコードを毎回記録する、私は開始インデックスを使用していて、終了インデックスは主キーである私のテーブルの列IDを持っています。LINQを使用して開始インデックスから終了インデックスまでボタンをクリックしてデータを取得する

ロードボタンをクリックすると、最後のID、つまりリストビューの最後のデータIDが取得されます。このIDには開始インデックスがあります。 20のデータを持ちますが、以前のデータは消去されます。私は20 + 20 = 40のデータを取得する必要があります。

これを達成する方法は?以下のコードをお探しください

  //Linq// 
      public dynamic getALlImage(int userID, int LastImageID) 
    { 
     //here LastImageId is my Listview Last data ImageID 
     if (LastImageID!=0) 
      { 
    startIndex= LastImageID+20; 
    EndIndex=LastImageID-20; 
} 
    else 
{ 
    startIndex= 20; 
    EndIndex=0; 
} 

    GetAllListFields = (from user in dbContext.UserTable 
        join img in dbContext.ImageTable on user.userId equals img.userID into UserVoice 
        from Image in UserVoice.DefaultIfEmpty() 
        where (Image.imgId <= startIndex && Image.imgId >= EndIndex && Image.userID == userID && Image.IsStatusChecked == false) 
        orderby feeds.CreatedAt descending 
        select new 
        { 
         PostImage = Image == null ? 0 : Image.ImageID, 
         Image = usrMessae==null?0: Image.userMessage, 
         createdAt = feeds == null ? DateTime.UtcNow : feeds.CreatedAt, 
         UserId = userdata == null ? 0 : userdata.userId, 
         Name = userdata == null ? " " : userdata.Name, 
         username = userdata == null ? " " : userdata.userName, 
       Email = userdata == null ? " " : userdata.emailID, 
        }).Distinct().OrderByDescending(x => x.createdAt).Take(startIndex).ToList(); 
    } 


    //HTML// 
    <div data-role="view"> 
    <div> 
    <ul data-role="listview" data-bind="foreach:ImageList"> 
    <li> 
    <div data-bind="text:userID"></div> 
    <div data-bind="text:userName"></div> 
    <div data-bind="text:UserImageSrc"></div> 
    <div data-bind="text:ImageId></div> 
    <div data-bind="text:PostImageSrc"></div> 
    <div > 
    <button data-bind="click:getLoadMoreImageData">Load More</button> 
    </div> 
    </li> 
    </ul> 
    </div> 
    </div> 

     //Knockout Js 
    function UserImageViewModel() 
    { 
     self=this; 
     var lastModelValue = (self.FeedPostdata()  [self.FeedPostdata().length - 1]); 
     var lastPostImageId = (lastModelValue.ImageId()) 

    //On Load More click last Image ID  
    self.getLoadMoreImageData=function() 
    {  
     $('#loading').show(); 
     var UserModel = { userID:userID,ImageId:lastPostImageId} 
     jQuery.support.cors = true; 
     $.ajax({ 
     type: "POST", 
     dataType: "json", 
     url: serverUrl + 'api/xxx/xxx', 
     data: UserModel, 
     success: function (data) { 
     self.ImageList($.map(data, function (item) { 
       return new ImageModel(item); 
     }));}, 
     complete: function() { 
      $('#loading').hide(); 
     }, 
     error: function (error) { 
      jsonValue = jQuery.parseJSON(error.responseText);} });}} 


    // On Page Load without last Image ID 
     self.getALlUSerImage=function() 
    { 

     $('#loading').show(); 
     var UserModel = { userID: userID} 
     jQuery.support.cors = true; 
     $.ajax({ 
     type: "POST", 
     dataType: "json", 
     url: serverUrl + 'api/xxx/xxx', 
     data: UserModel, 
     success: function (data) { 
     self.ImageList($.map(data, function (item) { 
       return new ImageModel(item); 
     }));}, 
     complete: function() { 
      $('#loading').hide(); 
     }, 
     error: function (error) { 
      jsonValue = jQuery.parseJSON(error.responseText);} }); 
      }} 
      } 


      //Model// 
      function ImageModel(item) 
      { 
      self.userId=ko.observable(item.userId); 
      self.userName=ko.observable(item.UserName); 
      self.UserImageSrc = ko.computed(function() { 
      return "data:" + self.UserImageSrcType() + ";base64," + self.UserImageSrcBase64();}); 

      self.ImageID=ko.observable(item.ImageId) 
      self.PostImageSrc = ko.computed(function() { 
      return "data:" + self.PostImageType() + ";base64," + self.PostImageBase64();});      
      } 

     $(document).ready(function() { 
     ViewModel = new UserImageViewModel(); 
     ko.applyBindings(ViewModel); 
     } 

答えて

1

1つの変数を宣言して初期データを割り当てることができます。成功したすべてのajax呼び出しがその変数に応答した後、その変数の値をモデルに渡します。

関連する問題