2011-10-06 71 views
0

我希望在每次填充网格时jquery文件都运行,并且jQuery文件应该循环遍历gridview并根据特定条件执行某些操作。 在我的网格中,我在GridView中有一个名为StatusId的列,并且基于Statuid,我想为另一列中的标签设置文本。我正在尝试使用jQuery来完成此操作。我不知道我哪里错了。每次填充网格并遍历gridview的所有行循环时运行jquery

我有一个名为Setstatus.js

外部JS文件

StatusId是在GridView绑定的字段。 lblStatus是gridview的模板字段中的标签。

$(document).ready(function() { 

    $('#<%=gvAsgnments.ClientID%>') 
       .find('tr') 
       .each(function (row) { 
        $(this).each(function (col) { 
         if (($.trim($(this).find("input[id*='StatusId']").val() === 0))) { 
          $("input[id*='lblStatus']", $(this)).val('New'); 
          $("input[id*='StatusId']", $(this)).style.display = 'block'; 
         } 
        }); 
       }); 

}); 

我指的是在Setstatus.js我的aspx页面

<script type="text/javascript" src="Scripts/Admin.js" ></script> 

jQuery的文件不会产生任何结果。我在误解什么。

样本HTML:

<div> 
     <table class="CNIGridView" cellspacing="0" rules="all" align="center" border="1" id="MainContent_gvAsgnments" style="border-collapse:collapse;"> 
      <tr class="CNIGridViewHeader"> 
         <th scope="col" abbr="Status">&nbsp;</th> 
         <th scope="col" abbr="Claim">Claim</th> 
         <th scope="col" abbr="Claimant">Claimant</th> 
         <th scope="col" abbr="Date">Date</th> 
         <th scope="col">StatusId</th> 
      </tr> 
        <tr class="CNIGridViewRow"> 
        <td> 
          <span id="MainContent_gvAdminActiveAsgnments_lblStatus_0"></span> 
          </td> 
          <td> 
          <span id ="MainContent_gvAdminActiveAsgnments_lblClaim_0">MH001025</span> 
          </td> 
          <td> 
          <span id="MainContent_gvAdminActiveAsgnments_lblClaimant_0">Deborah</span> 
          </td> 
          <td>10/2/2011 12:00:00 AM</td> 
       <td>0</td> 
        </tr> 
     </table> 
    </div> 

在此先感谢

BB

回答

1

难道不执行或不只是产生的结果?有一个明确的区别。你打开一个JavaScript控制台或调试器,看看是否有任何错误发生在页面上?

一个想法 - 你说lblStatus是一个标签。如果它确实是一个HTML标签,那么input[id*='lblStatus']将不能用作选择器。它应该是label[id*='lblStatus']。此外,我不认为您使用val()设置了标签元素的文字,您可以使用text()

希望它有帮助。

+0

谢谢。当我调试我可以看到该功能执行,但不会产生任何结果。我提出了你提到的改变仍然没有成功。 – BumbleBee

+0

你可以包含HTML呈现后的样子吗? –

1

假设您使用的是Asp.Net标签,标签实际上不会有代码中指定的任何ID。最简单的方法是使用CssClass属性为它们分配一个标识符,并使用选择器中的标识符来处理它们。

至于你重新绑定的GridView你用什么方法来更新它?

+0

gridview是在多视图

 \t \t \t  \t \t \t \t 
内。对于绑定我使用数据绑定方法。 – BumbleBee

+0

我认为ID问题是他使用'* ='操作符的原因。 http://api.jquery.com/attribute-contains-selector/ –

+0

我对包含运算符没有太多好运,我认为使用类选择器可以获得比DOM中每个ID更好的性能。 – PCasagrande