I am using a radgrid which has 3 template columns, each template columns contains the textbox, when i type something in the textbox and tabout i should be able to get the textbox value as well as the grid row index so that i can access other gird data.
so kindly advise me on which event to be used to fire events when i change the text and tabout and also how to get the rowindex within that event.
Thanks in advance.
Santhosh
5 Answers, 1 is accepted
You can try out the following code to get the text typed in the textBox and the row index of that particular textbox, on tab key press as shown below.
aspx:
<telerik:GridTemplateColumn> |
<ItemTemplate> |
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
cs:
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) |
{ |
if (e.Item is GridDataItem) |
{ |
GridDataItem dataItem = (GridDataItem)e.Item; |
TextBox txtBx = (TextBox)dataItem.FindControl("TextBox1"); |
int index=dataItem.ItemIndex; |
txtBx.Attributes.Add("onKeyDown", "return tabKeypress(event,'" + txtBx.ClientID + "','" + index + "');"); |
} |
} |
js:
function tabKeypress(e,textboxID,rowindex) |
{ |
if(e.keyCode==9) |
{ |
alert("TextBox Text = " +document.getElementById(textboxID).value); |
alert("row index = " +rowindex); |
} |
} |
Thanks
Princy.
Thank you very much for your replay, but what i need is assume there are other columns in the gird which are not template columns, that are grid bound columns, I want to retrive those data i.e other columun data(bound column), when the text change happens in the template column text box.
Kindly advise.
Regards,
Santhosh
You can extract cell values from other columns when the text changes in the textbox as shown below.
js:
function tabKeypress(e,textboxID,rowindex) |
{ |
if(e.keyCode==9) |
{ |
alert("TextBox Text = " +document.getElementById(textboxID).value); |
alert("row index = " +rowindex); |
var grid = $find("<%=RadGrid1.ClientID %>"); |
var MasterTable = grid.get_masterTableView(); |
//access the row contining the textbox |
var row = MasterTable.get_dataItems()[rowindex]; |
// To get the text for a particular column by its UniqueName |
var cell = MasterTable.getCellByColumnUniqueName(row, "ColumnUniqueName"); |
alert( cell.innerHTML) |
} |
} |
Thanks
Princy
I tried the method specified by you to get the grid column values but I am unable to get the values, its saying that "e.keyCode" value itself as undefined, Below is the code that I am woking, kindly have look at it once.
function
tabKeypress(e,textboxID,rowindex)
{
alert(
'hai');
alert(e.keyCode);
if(e.keyCode==9)
{
alert(
"TextBox Text = " +document.getElementById(textboxID).value);
alert(
"row index = " +rowindex);
var grid = $find("<%=radgridPaymentDetails.ClientID %>");
var MasterTable = grid.get_masterTableView();
//access the row contining the textbox
var row = MasterTable.get_dataItems()[rowindex];
// To get the text for a particular column by its UniqueName
var cell = MasterTable.getCellByColumnUniqueName(row, "ColumnUniqueName");
alert( cell.innerHTML)
}
}
<telerik:RadGrid ID="radgridPaymentDetails" runat="server" EnableViewState="true"
Skin="<%$ Resources:pageLabels, skinGrid %>"
AllowSorting="false" AllowPaging="True"
AutoGenerateColumns="False" PageSize="<%$ Resources:pageLabels, pageSize %>"
GridLines="None" ShowFooter="false">
<SelectedItemStyle Wrap="false" BackColor="#BDD6F5"></SelectedItemStyle>
<HeaderStyle HorizontalAlign="Left" BackColor="#E3EAF1"></HeaderStyle>
<ClientSettings>
<Selecting AllowRowSelect="True"></Selecting>
<ClientEvents OnKeyPress="tabKeypress" />
</ClientSettings>
<PagerStyle Mode="NextPrevNumericAndAdvanced" />
<MasterTableView>
<Columns>
<telerik:GridBoundColumn DataField="CPT/ASA" HeaderText="CPT/ASA" UniqueName="CPT/ASA">
<ItemStyle Width="70px" />
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Denied $">
<ItemStyle width="30px" />
<ItemTemplate>
<telerik:RadNumericTextBox
EmptyMessage="$0.00" ShowSpinButtons="false"
ButtonsPosition="Right" Type="Currency"
Culture="English (United States)" width="60px"
MaxLength ="6"
ID="radtxtDenied" value='<%# (CDbl((CType(Container.DataItem, System.Data.DataRowView)("Denied $"))))%>'
runat="server" onchange="UpdateDenied()">
<EnabledStyle HorizontalAlign="right" />
</telerik:RadNumericTextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
Regards,
Santhosh
Hi Santhosh,
You can get this undefined error, probably if you are not passing the event parameter from the code behind and then call the javascript function as shown by princy in her previous code.
cs:
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) |
{ |
if (e.Item is GridDataItem) |
{ |
GridDataItem dataItem = (GridDataItem)e.Item; |
TextBox txtBx = (TextBox)dataItem.FindControl("TextBox1"); |
int index=dataItem.ItemIndex; |
txtBx.Attributes.Add("onKeyDown", "return tabKeypress(event,'" + txtBx.ClientID + "','" + index + "');"); |
} |
} |
Shinu.