Rahul48 Ответов: 2

вычислите общее количество ячеек gridview в javascript и отобразите их в нижнем колонтитуле


Всем привет,
Я очень стараюсь узнать общее количество ячеек gridview и отобразить значения в текстовом поле нижнего колонтитула. Каждый раз, когда я получаю исключение:
Microsoft JScript runtime error: Object expected

Вот мой код gridview:
<div>
<asp:gridview ID="Gridview1" runat="server" ShowFooter="true"

            onrowcommand="Gridview1_RowCommand"  AutoGenerateColumns="false"

            CellSpacing="0" CellPadding="0" Font-Bold="false"

            onrowdeleting="Gridview1_RowDeleting">
        <Columns>
      <asp:BoundField DataField="RowNumber" HeaderText="Row Number"/>
  <asp:TemplateField HeaderText="Select" ControlStyle-Width="50px" HeaderStyle-Font-Bold="false" ControlStyle-Font-Bold="false">
     <ItemTemplate>
         <asp:CheckBox ID="chkSelect" runat="server" Width="80px"/>
     </ItemTemplate>
   </asp:TemplateField>
        <asp:TemplateField HeaderText="Header 1" HeaderStyle-Font-Bold="false" ControlStyle-Font-Bold="false">
            <ItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server" Width="70px"></asp:TextBox>
            </ItemTemplate>
            <FooterTemplate>
                <asp:Label ID="lblTotal" runat="server" Text="Total" Font-Bold="true"></asp:Label>
            </FooterTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Header 2"  HeaderStyle-Font-Bold="false" ControlStyle-Font-Bold="false">
            <ItemTemplate>
                <asp:TextBox ID="TextBox2" Width="70px" runat="server" onkeyup="Calculate('Gridview1')"></asp:TextBox>
            </ItemTemplate>
            <FooterTemplate>
                <asp:TextBox ID="total" runat="server" Width="70px"></asp:TextBox>
            </FooterTemplate>

        </asp:TemplateField>
        <asp:TemplateField HeaderText="Header 3" HeaderStyle-Font-Bold="false" ControlStyle-Font-Bold="false">
            <ItemTemplate>
                 <asp:TextBox ID="TextBox3" Width="70px" runat="server" ></asp:TextBox>
            </ItemTemplate>
            <FooterStyle HorizontalAlign="Right" />
            <FooterTemplate>
             <asp:Button ID="ButtonAdd" runat="server" Text="Add New Row" CommandName="AddNewRow" />
            </FooterTemplate>
        </asp:TemplateField>
        </Columns>
</asp:gridview>
    </div>


Вот мой код JavaScript:
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.5.js"></script>
  <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.js"></script>
  <script type="text/javascript">
    function Calculate(GridView)
    {
       var total = 0;
       var gridview = document.getElementById('<%=Gridview1.ClientID %>').getElementsByTagName("input");
       for ( i = 0; i < gridview.rows.length; i ++)
       {
           var node = gridview.rows[i].cells[3].childNodes[3]; //textbox

           if (node != undefined && node.type == "text") //check only textbox, ignore empty one
                if (!isNaN(node.value) && node.value != "") //check for valid number
                   total += parseInt(node.value);
       }
      // document.getElementById("total").innerHTML = total.toString(); //display
       var gridview1 = document.getElementById('<%=grdview1.ClientID %>');
       gridview1.rows[gridview.rows.length -1].cells[0].innerHTML=total;

    }
</script>


Я пробовал разными способами но каждый раз получал одно и то же исключение:
Microsoft JScript runtime error: Object expected

Похоже, что-то не так с моим JavaScript-кодом.
Пожалуйста, кто-нибудь, помогите мне.

2 Ответов

Рейтинг:
2

Member 14536194

Add a css class to your fields

    <asp:BoundField DataField="Time" HeaderText="Time"> 
      <ItemStyle CssClass="yourclass"></ItemStyle> 
     </asp:BoundField> 

and use the following code

 var fields= document.getElementsByClassName('yourclass');
    var sum = 0;
    for (var i = 0; i < fields.length; ++i) {
        var item = fields[i];  
         sum += parseInt(item.innerHTML);
    }

and then assign that sum to your total label

$("#<%= totalHours.ClientID %>").text(sum);


Рейтинг:
0

thatraja

Ошибка в вашем коде(неправильное имя элемента управления в коде js)
Эта линия

var gridview1 = document.getElementById('<%=grdview1.ClientID %>');

должно быть
var gridview1 = document.getElementById('<%=Gridview1.ClientID %>');

Gridview1 это идентификатор элемента управления GridView