ASP.NET - How to get label value inside the gridview itemtemplate in javascript

Asked By Venkatesh Desai on 13-Apr-12 01:21 AM

Hi All,

This Is My Sample Code Please Look Into this,

<asp:GridView ID="GVRatingControl" runat="server" BackColor="White" AutoGenerateColumns="false" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical">
<RowStyle BackColor="#EEEEEE" ForeColor="Black" />
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#DCDCDC" />

<Columns>

<asp:TemplateField HeaderText="CategoryName" SortExpression="CategoryName">
<ItemStyle HorizontalAlign="Left" />
<HeaderStyle HorizontalAlign="Left" />
<ItemTemplate>
<asp:Label ID="lblCategoryID" runat="server" Text='<%#Eval("CategoryID") %>' Visible="false"></asp:Label>
<asp:Label ID="lblMyRatingID" runat="server" Text='<%#Eval("MyRatingID") %>' Visible="false"></asp:Label>
<asp:Label ID="lblRating" runat="server" Text='<%#Eval("Rating") %>' Visible="false"></asp:Label>
<asp:Label ID="lblCategoryName" runat="server" Text='<%#Eval("CategoryName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Rating">
<ItemStyle HorizontalAlign="Left" Wrap="false"></ItemStyle>
<HeaderStyle HorizontalAlign="Left"></HeaderStyle>
<ItemTemplate>
<div class="statVal">
<span class="ui-rater">
<span class="ui-rater-starsOff" style="width:90px;">
<span class="ui-rater-starsOn" id="testSpan" runat="server" onclick="MySpan();"></span>
</span>
<span class="ui-rater-rating" id="avgrating" runat="server"></span>
(<span class="ui-rater-rateCount" id="userscount" runat="server"></span>)
</span>
</div>
</ItemTemplate>
</asp:TemplateField>

</Columns>
</asp:GridView>

<script language="javascript" type="text/javascript">
function MySpan()
{
var MyGrid = document.getElementById('<%=GVRatingControl.ClientID %>');
var lblCategoryID = document.getElementById('<%=GVRatingControl.SelectedRow.FindControl("lblCategoryID").ClientID%>');
var lblMyRatingID = document.getElementById('<%=GVRatingControl.SelectedRow.FindControl("lblMyRatingID").ClientID%>');
var lblRating = document.getElementById('<%=GVRatingControl.SelectedRow.FindControl("lblRating").ClientID%>');
var lblCategoryName = document.getElementById('<%=GVRatingControl.SelectedRow.FindControl("lblCategoryName").ClientID%>');
var CategoryID = lblCategoryID.value;
var MyRatingID = lblMyRatingID.value;
var Rating = lblRating.value;
var CategoryName = lblCategoryName.value;
Response.Redirect('MyRatingHandler.ashx?CategoryID=' + CategoryID);
}
</script>

When i run this sample code am getting error in this line
var lblCategoryID = document.getElementById('<%=GVRatingControl.SelectedRow.FindControl("lblCategoryID").ClientID%>');
like,
Object reference not set to an instance of an object.

How to solve this issue??????

& also i wrote like this in javascript,
Response.Redirect('MyRatingHandler.ashx?CategoryID=' + CategoryID);
Is it correct????

Thanks In Advance,
VenkiDesai.K

dipa ahuja replied to Venkatesh Desai on 13-Apr-12 04:23 AM
Try it with jquery :

<script src="jquery-1.3.2.min.js" type="text/javascript"></script>

<ItemTemplate>

  <asp:Label ID="lblID" CssClass="IdLabel" runat="server" Text='<%# Eval("empid") %>' />

  <asp:Label ID="lblname" CssClass="nameLabel" runat="server" Text='<%# Eval("ename") %>' />

</ItemTemplate>

 
 
<script type="text/javascript"> 
  function submitAll() {
    var size = $('.nameLabel').length;
    for (i = 0; i < size; i++) {
      var name = $('.nameLabel').eq(i).text();
      var id = $('.IdLabel').eq(i).text();
      var result = document.getElementById('result');
      result.innerText += name + "  \t " + id + "\n";
    }
  }
</script> 

<asp:Button ID="Button2" runat="server" OnClientClick=" submitAll();return false;" 
  Text="Print" /> 

kalpana aparnathi replied to Venkatesh Desai on 15-Apr-12 02:19 PM
hi,

Use below code:


function Test()
{
        var gv = document.getElementById("<%=GridView1.ID %>");
        var gvRowCount = gv.rows.length;
        var i = 1;
        for (i; i<= gvRowCount - 1; i++)
        {         
          alert(gv.rows[i].cells[2].childNodes[1].innerHTML);
        }
        return false;
}

Regards,

Somesh Yadav replied to Venkatesh Desai on 16-Apr-12 07:22 AM

Refer

http://www.aspsnippets.com/Articles/Get-ASPNet-GridView-Row-and-its-RowIndex-when-clicked-using-JavaScript.aspx