2015-08-28 21 views
1

我見過有點類似的問題,但似乎沒有任何工作對我來說。JQuery找到錶行的地方對象==表數據

我在我的JQuery中調用了一個AJAX,它返回一個組名的列表,然後,對於列表中的每個對象,需要查看錶中的匹配項並更改其中一個單元格的類行。所以基本上:

  1. AJAX返回JSon結果與List<string>與組名稱。
  2. 尋找td其中List object == TD.Text()
  3. 更改錶行中的一類(我知道該怎麼做,所以並不重要)

jQuery的

$("#UserGridView_DXMainTable .dxgv").click(function() { 
      //Get data to send to controller 
       $.ajax({ 
        url: '@Url.Action("GetUserGroups", "Home")', 
        data: { 'userLogin': insertText }, 
        type: "post", 
        datatype: 'json', 
        cache: false, 
        success: function (data) { 
         if (!jQuery.isEmptyObject(data)) { 
          data.GroupNames.each(function() { <== Is this correct? 
          <====== I cannot seem to find a working solution for here. 
          }) 
         } 
        } 
       }); 
      }); 
    }); 

控制器

public JsonResult GetUserGroups(string userLogin) 
     { 
      if (userLogin != null) 
      { 
       Manager manager = new Manager(); 
       var details = manager.GetUserData(userLogin); 
       var userGroupsID = details.GroupsId; 
       List<string> GroupNames = new List<string>(); 
       for(var i = 0; i < userGroupsID.Count(); i++) 
       { 
        var Gdetails = manager.GetGroupData(userGroupsID[i]); 
        var GName = Gdetails.Name; 
        GroupNames.Add(GName); 
       } 

      return Json(new { GroupNames = GroupNames }, JsonRequestBehavior.DenyGet); 

     } 

     return Json(new { }, JsonRequestBehavior.DenyGet); 
    } 

我如果你想知道其他的東西,請告訴我。 由於

編輯:返回的數據的

實施例:

data.GroupNames = [ 「默認」, 「普通用戶」, 「管理器」 等。]

+0

data.GroupNames是空的還是未定義的?你打印結果或確定你有數據在結果 – Akki619

+0

data.GroupNames填充在控制器中,並返回一個字符串對象列表@ Akki619 – hjardine

+0

問題是,我不能通過查找表並找到匹配的錶行@ Akki619 – hjardine

回答

1

所以,如果我理解正確,GroupNames是一個文本數組,您正在查看這個文本是否與td中的任何文本匹配?如果然後嘗試這一點。

$tds = $('td'); 
    $.each(data.GroupNames, function (index, val) { 
     console.log(val + ' ' + index); 
     $tds.each(function(){ 
      if($(this).text() === val){ 
       console.log('found'); 
      } 
     }); 
    }); 

Demo

該算法可通過除去它相匹配的TD每次(除非TD可匹配多個組名)

+0

我將如何優化這個,因爲它可以採取一個非常日誌時間有時(td只能匹配一個GroupNames),謝謝 – hjardine

+0

@hjardine你在找到val之後,必須通過在**控制檯之後添加** return false; **來打破每個循環。log('found'); **然後由於** td **只能匹配一個** GroupName **,所以您必須找到一種方法從** tds **列表中刪除** td **所以你不必一遍又一遍地檢查它。 – rottenoats

0

您好請從

返回JSON在控制器改變(被優化new {},JsonRequestBehavior.DenyGet); - >返回Json(new {},JsonRequestBehavior.AllowGet);