This is a migrated thread and some comments may be shown as answers.

[Solved] Access RadGrid rows from .net button

4 Answers 188 Views
Grid
This is a migrated thread and some comments may be shown as answers.
sreedhar ambati
Top achievements
Rank 1
sreedhar ambati asked on 16 Aug 2009, 12:16 PM
HI

I am having a radgrid and want to access the rows from an asp.net button clientside.

<

 

asp:LinkButton ID="LinkButton1" runat="server" OnClick="lnkbtnAddSlot_New_Click"

 

 

Width="97px" CssClass="sf-inputsLinkButton" OnClientClick="return AddSlot_New()">Add Slot_New</asp:LinkButton>

OnClientClick I want to access the no. of rows in radgrid and the values of the cells.

I used

 

 

var gvWorkingHours = $find("<%= gvWorkingHours_New.ClientID %>").get_masterTableView();

 

 


This is becoming null always.

for
(var i = 0; i < gvWorkingHours.get_masterTableView().get_dataItems().length; i++)

 

{

 

var row = Rows[i];

 

 

var textbox1 = row.findControl("txtSlotName"); //

 

 

 

 

}

Please suggest solution.

Below is the entire source  code.

------------
aspx page
---

 

<%

@ Page Language="C#" AutoEventWireup="true"

 

 

 

 

MasterPageFile

 

="~/EnterpiseConsoleFiles/MasterPage.master" CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<%

@ Register Assembly="RadCalendar.Net2" Namespace="Telerik.WebControls" TagPrefix="radCln" %>

 

<%

@ Register Assembly="RadAjax.Net2" Namespace="Telerik.WebControls" TagPrefix="radA" %>

 

<%

@ Register Assembly="RadGrid.Net2" Namespace="Telerik.WebControls" TagPrefix="rad" %>

 

 

 

 

<

 

asp:Content ID="content" runat="server" ContentPlaceHolderID="Cont">

 

 

 

 

 

 

<script type="text/javascript">

 

 

 

 

 

 

function TestHandler(sender, eventArgs)

 

{

 

var oldTime = eventArgs.oldTime;

 

 

var newTime = eventArgs.newTime;

 

 

var msg = "Time changed from ";

 

 

if (oldTime)

 

msg = msg + oldTime;

 

else

 

 

 

 

 

msg = msg +

"nothing";

 

msg = msg +

" to ";

 

 

if (newTime)

 

msg = msg + newTime;

 

else

 

 

 

 

 

msg = msg +

"nothing";

 

 

alert(msg);

}

 

function AddSlot_New()

 

{

 

debugger;

 

 

 

var gvWorkingHours = $find("<%= gvWorkingHours_New.ClientID %>").get_masterTableView();

 

 

for (var i = 0; i < gvWorkingHours.get_masterTableView().get_dataItems().length; i++)

 

{

 

var row = Rows[i];

 

 

var textbox1 = row.findControl("txtSlotName"); //

 

 

 

 

 

}

}

 

 

 

function DateSelected(sender, args)

 

{

 

var text = args.newTime;

 

alert(

'sree');

 

}

 

function error(sender, args)

 

{

 

var text = args.get_inputText;

 

alert(

'dhar');

 

}

 

</script>

 

 

 

 

 

 

 

 

<div>

 

 

 

 

 

 

<rad:RadGrid ID="gvWorkingHours_New" runat="server" Skin="SkeltaGrid" AutoGenerateColumns="false"

 

 

 

 

 

 

>

 

 

 

 

 

 

<MasterTableView>

 

 

 

 

 

 

<Columns>

 

 

 

 

 

 

<rad:GridTemplateColumn>

 

 

 

 

 

 

<ItemTemplate>

 

 

 

 

 

 

<asp:TextBox runat="server" ID="txtSlotName" CssClass="inputsNoExpression" Text='<%# Eval("SlotName") %>'></asp:TextBox>

 

 

 

 

 

 

</ItemTemplate>

 

 

 

 

 

 

</rad:GridTemplateColumn>

 

 

 

 

 

 

<rad:GridTemplateColumn>

 

 

 

 

 

 

<ItemTemplate>

 

 

 

 

 

 

<radCln:RadTimePicker ID="rtpFromTime" Width="31%" runat="server" TabIndex="2" EnableTyping="true"

 

 

 

 

 

 

TimeView-TimeFormat="HH:mm" DateInput-DateFormat="HH:mm" DateInput-DisplayDateFormat="HH:mm"

 

 

 

 

 

 

DateInput-EmptyMessage="From Time" DBSelectedDate='<%# Eval("FromTime") %>'>

 

 

 

 

 

 

<TimeView ID="tvFrom" runat="server" ShowHeader="False" Interval="00:30" Columns="3">

 

 

 

 

 

 

</TimeView>

 

 

 

 

 

 

 

<ClientEvents OnDateSelected="DateSelected" />

 

 

<DateInput>

 

 

<ClientEvents OnError="error" />

 

 

</DateInput>

 

 

</radCln:RadTimePicker>

 

 

 

 

 

 

</ItemTemplate>

 

 

 

 

 

 

</rad:GridTemplateColumn>

 

 

 

 

 

 

<rad:GridTemplateColumn>

 

 

 

 

 

 

<ItemTemplate>

 

 

 

 

 

 

<radCln:RadTimePicker ID="rtpToTime" Width="31%" runat="server" TabIndex="2" EnableTyping="true"

 

 

 

 

 

 

TimeView-TimeFormat="HH:mm" DateInput-DateFormat="HH:mm" DateInput-DisplayDateFormat="HH:mm"

 

 

 

 

 

 

DateInput-EmptyMessage="To Time" DBSelectedDate='<%# Eval("ToTime") %>'>

 

 

 

 

 

 

<TimeView ID="tvTo" runat="server" ShowHeader="False" Interval="00:30" Columns="3"

 

 

 

 

 

 

OnClientTimeSelected="TestHandler">

 

 

 

 

 

 

</TimeView>

 

 

 

 

 

 

</radCln:RadTimePicker>

 

 

</ItemTemplate>

 

 

 

 

 

 

</rad:GridTemplateColumn>

 

 

 

 

 

 

 

<rad:GridTemplateColumn>

 

 

 

 

 

 

<ItemTemplate>

 

 

 

 

 

 

<asp:CompareValidator ID="dateCompareValidator" runat="server" ControlToValidate="rtpToTime"

 

 

 

 

 

 

ControlToCompare="rtpFromTime" Operator="GreaterThan" Type="String" ErrorMessage="To Date must be greater than From Date">

 

 

 

 

 

 

</asp:CompareValidator>

 

 

 

 

 

 

</ItemTemplate>

 

 

 

 

 

 

</rad:GridTemplateColumn>

 

 

 

 

 

 

</Columns>

 

 

 

 

 

 

</MasterTableView>

 

 

 

 

 

 

</rad:RadGrid>

 

 

 

 

 

 

<asp:LinkButton ID="LinkButton1" runat="server" OnClick="lnkbtnAddSlot_New_Click"

 

 

 

 

 

 

Width="97px" CssClass="sf-inputsLinkButton" OnClientClick="return AddSlot_New()">Add Slot_New</asp:LinkButton>

 

 

 

 

 

 

</div>

 

 

 

 

 

 

</asp:Content>

 

code behind
-----------------

 

using

 

System;

 

 

 

using

 

System.Data;

 

 

 

using

 

System.Configuration;

 

 

 

using

 

System.Collections;

 

 

 

using

 

System.Web;

 

 

 

using

 

System.Web.Security;

 

 

 

using

 

System.Web.UI;

 

 

 

using

 

System.Web.UI.WebControls;

 

 

 

using

 

System.Web.UI.WebControls.WebParts;

 

 

 

using

 

System.Web.UI.HtmlControls;

 

 

 

using

 

Telerik.WebControls;

 

 

 

public

 

partial class _Default : System.Web.UI.Page

 

 

 

 

{

 

protected void Page_Load(object sender, EventArgs e)

 

{

 

if (!IsPostBack)

 

{

SetInitialRowForSlots_New();

}

}

 

private void SetInitialRowForSlots_New()

 

{

 

DataTable dtSlots = new DataTable();

 

dtSlots.Columns.Add(

new DataColumn("SlotName", typeof(string)));

 

dtSlots.Columns.Add(

new DataColumn("FromTime", typeof(string)));

 

dtSlots.Columns.Add(

new DataColumn("ToTime", typeof(string)));

 

 

DataRow drSlot = dtSlots.NewRow();

 

drSlot[

"SlotName"] = string.Empty;

 

drSlot[

"FromTime"] = new TimeSpan(0, 0, 0);

 

drSlot[

"ToTime"] = new TimeSpan(0, 0, 0);

 

dtSlots.Rows.Add(drSlot);

gvWorkingHours_New.DataSource = dtSlots;

gvWorkingHours_New.DataBind();

}

 

protected void lnkbtnAddSlot_New_Click(object sender, EventArgs e)

 

{

 

DataTable dtSlots = new DataTable();

 

dtSlots.Columns.Add(

new DataColumn("SlotName", typeof(string)));

 

dtSlots.Columns.Add(

new DataColumn("FromTime", typeof(string)));

 

dtSlots.Columns.Add(

new DataColumn("ToTime", typeof(string)));

 

 

foreach (GridDataItem pkgItem in gvWorkingHours_New.MasterTableView.Items)

 

{

 

TextBox SlotName = pkgItem.FindControl("txtSlotName") as TextBox;

 

 

RadTimePicker FrTime = pkgItem.FindControl("rtpFromTime") as RadTimePicker;

 

 

RadTimePicker ToTime = pkgItem.FindControl("rtpToTime") as RadTimePicker;

 

 

DataRow dr = dtSlots.NewRow();

 

dr[

"SlotName"] = SlotName.Text;

 

dr[

"FromTime"] = new TimeSpan(((DateTime)(FrTime.DbSelectedDate)).TimeOfDay.Hours, ((DateTime)(FrTime.DbSelectedDate)).TimeOfDay.Minutes, 0);

 

dr[

"ToTime"] = new TimeSpan(((DateTime)(ToTime.DbSelectedDate)).TimeOfDay.Hours, ((DateTime)(ToTime.DbSelectedDate)).TimeOfDay.Minutes, 0);

 

dtSlots.Rows.Add(dr);

}

 

DataRow drEmpty = dtSlots.NewRow();

 

drEmpty[

"SlotName"] = string.Empty;

 

drEmpty[

"FromTime"] = new TimeSpan(0, 0, 0);

 

drEmpty[

"ToTime"] = new TimeSpan(0, 0, 0);

 

dtSlots.Rows.Add(drEmpty);

gvWorkingHours_New.DataSource = dtSlots;

gvWorkingHours_New.DataBind();

}

 

}


Regards
Sreedhar Ambati

4 Answers, 1 is accepted

Sort by
0
Accepted
Princy
Top achievements
Rank 2
answered on 17 Aug 2009, 06:17 AM
Hi Sreedhar,

Try modifying the client side code as shown below and see whether it helps.

JS:
 
function AddSlot_New() 
    var gvWorkingHours = $find("<%= gvWorkingHours_New.ClientID %>").get_masterTableView(); 
    for (var i = 0; i < gvWorkingHours.get_dataItems().length; i++) 
    { 
      var row = gvWorkingHours.get_dataItems()[i]; 
      alert(row) 
    } 

Regards
Princy
0
sreedhar ambati
Top achievements
Rank 1
answered on 17 Aug 2009, 01:46 PM
HI
It is not working. It is giving null value.
I am using Q1 2008 telerik 
Button is outside the grid.
Can you provide one sample example?

Regards,
Sreedhar Ambati
0
sreedhar ambati
Top achievements
Rank 1
answered on 19 Aug 2009, 05:43 AM
HI

I am using Vs 2005.
I am not able to access the radgrid masterview.
I was completely struck at this point.

Thanks
Sreedhar
0
Shinu
Top achievements
Rank 2
answered on 19 Aug 2009, 06:39 AM
Hi Sreedhar,

From the previous post I can see that you are using RadGrid for asp.net. The above given client side code works only with RadGrid for asp.net AJAX version. Here is the client side code to loop through Grid rows(asp.net version).

JS:
 
var gvWorkingHours = window["<%= RadGrid1.ClientID %>"]; 
   for (var i = 0; i < gvWorkingHours.MasterTableView.rows.length; i++) 
   {  
      var row =gvWorkingHours.MasterTableView.rows[i];  
      alert(row)  
    }  

But the Grid  Rows collection is available only when specific client features/events related to grid rows are enabled. These include: 
  • AllowRowResize
  • AllowRowSelect
  • OnRowClick
  • etc.

Thanks
Shinu
Tags
Grid
Asked by
sreedhar ambati
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
sreedhar ambati
Top achievements
Rank 1
Shinu
Top achievements
Rank 2
Share this question
or