2015-08-19 3 views
0

это мой код javascript. в ASP.net C#. Раньше тоже ничего плохого. Но вдруг рухнет.Невозможно прочитать свойство 'children' of undefined

Я не знаю, что-то не так. Этот код я хочу подстроить идентификатор текста в gridview и сохранить его в массиве и отправить код C# позади метода SetCompareID для сохранения в cookie.

Ошибка: Не удается прочитать свойство «детей» неопределенной

Пожалуйста, помогите мне.

function compareClick() { 
 

 
      var checkbox_count = 0; 
 
      var compare = []; 
 
      var grdView = document.getElementById('body_GridView1'); 
 
      var intRowCount = grdView.rows.length; 
 
      if (intRowCount > 0) { 
 

 
       for (var i = 0; i < intRowCount; i++) { 
 
        var chkType = grdView.rows[i].cells[5].children[0]; 
 
        if (chkType.type == 'checkbox') 
 
         if (chkType.checked) { 
 
          { 
 
           var txtType = grdView.rows[i].cells[0].children[0] 
 

 
           var newText = txtType.toString(); 
 
           newText = newText.substring(newText.lastIndexOf('=') + 1); 
 
           compare.push(newText); 
 
           checkbox_count += 1; 
 
          } 
 
         } 
 
       } 
 
       PageMethods.SetCompareID(compare); 
 
       updateCookie(); 
 
       $("#compare_count").html(checkbox_count); 
 
      } 
 
     }

и это GridView1 код

<asp:GridView ID="GridView1" 
runat="server" AllowPaging="True" AllowSorting="True" ShowHeader="False" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" Width="100%"> 

       <AlternatingRowStyle BackColor="White" /> 
       <Columns> 

        <asp:TemplateField Visible="false"> 
         <ItemTemplate> 
          <asp:Label ID="id" runat="server" Text='<%# Eval("id") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 

        <asp:TemplateField ItemStyle-Width="25%"> 
         <ItemTemplate> 
          <asp:HyperLink runat="server" NavigateUrl='<%# Eval("id","~/detail.aspx?id={0}") %>'> 
            <img src='<%# Eval("image") %>' alt="Read online" /> 
          </asp:HyperLink> 
         </ItemTemplate> 
        </asp:TemplateField> 

        <asp:HyperLinkField DataNavigateUrlFields="id" ItemStyle-Width="20%" ItemStyle-Font-Size="21px" DataNavigateUrlFormatString="detail.aspx?id={0}" DataTextField="name"></asp:HyperLinkField> 

        <asp:TemplateField ItemStyle-Font-Size="17px"> 
         <ItemTemplate> 
          <%# Eval("detail").ToString().Length>150 ? (Eval("detail") as string).Substring(0,150)+"..." : Eval("detail") %> 
         </ItemTemplate> 
        </asp:TemplateField> 

        <asp:BoundField DataField="rent" ItemStyle-Width="8%" ItemStyle-Font-Size="17px" DataFormatString="ค่าเช่า {0} ต่อเดือน" SortExpression="rent"></asp:BoundField> 
        <asp:BoundField DataField="deposit" ItemStyle-Width="10%" ItemStyle-Font-Size="17px" DataFormatString="ค่ามัดจำ {0} บาท" SortExpression="deposit"></asp:BoundField> 
        <asp:TemplateField ItemStyle-Width="14%"> 
         <ItemTemplate> 
          <asp:CheckBox runat="server" ID="compareRow" Text="เปรียบเทียบ" onclick="compareClick()" /> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
       <EditRowStyle BackColor="#2461BF" /> 
       <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
       <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
       <PagerStyle BackColor="#FE0048" ForeColor="#D85709" HorizontalAlign="Center" /> 
       <RowStyle BackColor="#EFF3FB" /> 
       <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
       <SortedAscendingCellStyle BackColor="#F5F7FB" /> 
       <SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
       <SortedDescendingCellStyle BackColor="#E9EBEF" /> 
       <SortedDescendingHeaderStyle BackColor="#4870BE" /> 
      </asp:GridView> 
+0

Вам необходимо разместить разметку «GridView». –

+0

Какая у вас проблема? – brso05

+1

Какое сообщение об ошибке вы получаете? – brso05

ответ

0

не может прочитать значение не определено означает только одно, значение не установлено, так что в вашем случае, это один из двух вещей:

cells[5].children[0]; 
grdView.rows[i].cells[0].children[0] 

либо cells[5] не существует, либо cells[0] не существует, проверьте номер строки, и вы узнаете, какое значение вызывает проблему.

, скорее всего, это, конечно, это ceslls[5].

вы можете сделать что-то:

var chkType = if(grdView.rows[i].cells[5])grdView.rows[i].cells[5].children[0]; 

если ошибка остановки происходит, то это определенно ошибка значение, и вы можете выяснить, почему он не установлен.