I'm trying to find out how to center the Edit Form (FormTemplate) within the grid. In my case, the Edit Form is a user control and then buttons for Update/Cancel. The height of the FormTemplate and all of it's controls is less than that of the grid (i.e. you can see grid rows in addition to the row containing the form when you're editing). What I'd like to happen is when the user clicks on Edit that the Edit Form would center itself vertically within the grid (to prevent the bottom portion of the form from being off-screen and requiring the user to scroll the grid manually to see the entire Edit form).
Does anyone know if it's possible to do this kind of thing?
Thanks,
Jon
Does anyone know if it's possible to do this kind of thing?
Thanks,
Jon
4 Answers, 1 is accepted
0
Hi Jon,
Although you have not mentioned it, I suppose that you are using a popup edit form, otherwise there can't be any vertical centering within the RadGrid control. Please refer to:
http://www.telerik.com/help/aspnet-ajax/center-popup-edit-form.html
Greetings,
Dimo
the Telerik team
Although you have not mentioned it, I suppose that you are using a popup edit form, otherwise there can't be any vertical centering within the RadGrid control. Please refer to:
http://www.telerik.com/help/aspnet-ajax/center-popup-edit-form.html
Greetings,
Dimo
the Telerik team
Do you want to have your say when we set our development plans?
Do you want to know when a feature you care about is added or when a bug fixed?
Explore the
Telerik Public Issue Tracking
system and vote to affect the priority of the items
0

Jon
Top achievements
Rank 1
answered on 20 Oct 2010, 07:05 PM
Dimo,
Thank you for your response!
Actually, in my situation, this is not a pop up form, just an in-line form (user control) that appears below the edited item. I understand that there's no direct support for centering my edit form within the grid (to prevent the cropping that occurs at the bottom of the form that requires the user to scroll the form to get the entire form to appear within the grid), but is there a work-around? Can I scroll the edit item to the top of the grid (for example), which would ensure the entire edit form appears (even though it wouldn't be centered)?
If you have any suggestions on alternative approaches (other than using a pop-up form), please let me know.
Thanks,
Jon
Thank you for your response!
Actually, in my situation, this is not a pop up form, just an in-line form (user control) that appears below the edited item. I understand that there's no direct support for centering my edit form within the grid (to prevent the cropping that occurs at the bottom of the form that requires the user to scroll the form to get the entire form to appear within the grid), but is there a work-around? Can I scroll the edit item to the top of the grid (for example), which would ensure the entire edit form appears (even though it wouldn't be centered)?
If you have any suggestions on alternative approaches (other than using a pop-up form), please let me know.
Thanks,
Jon
0
Hello Jon,
I didn't understand what you are trying to do the first time. Here is how to scroll to the edit form, so that it comes into view:
Kind regards,
Dimo
the Telerik team
I didn't understand what you are trying to do the first time. Here is how to scroll to the edit form, so that it comes into view:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<
script
runat
=
"server"
>
protected void RadGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
DataTable dt = new DataTable();
DataRow dr;
int colsNum = 4;
int rowsNum = 30;
string colName = "Column";
for (int j = 1; j <= colsNum; j++)
{
dt.Columns.Add(String.Format("{0}{1}", colName, j));
}
for (int i = 1; i <= rowsNum; i++)
{
dr = dt.NewRow();
for (int k = 1; k <= colsNum; k++)
{
dr[String.Format("{0}{1}", colName, k)] = String.Format("{0}{1} Row{2}", colName, k, i);
}
dt.Rows.Add(dr);
}
(sender as RadGrid).DataSource = dt;
}
</
script
>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
>
<
meta
http-equiv
=
"content-type"
content
=
"text/html;charset=utf-8"
/>
<
title
>RadControls</
title
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
asp:ScriptManager
ID
=
"ScriptManager1"
runat
=
"server"
/>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
Width
=
"800px"
AutoGenerateEditColumn
=
"true"
OnNeedDataSource
=
"RadGrid_NeedDataSource"
>
<
ClientSettings
>
<
ClientEvents
OnGridCreated
=
"scrollToForm"
/>
<
Scrolling
AllowScroll
=
"true"
UseStaticHeaders
=
"true"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
<
script
type
=
"text/javascript"
>
function scrollToForm(sender, args)
{
var editForm = $telerik.getElementByClassName(sender.get_element(), "rgEditForm", "div");
if (editForm)
{
window.setTimeout(function(){$telerik.scrollIntoView(editForm);}, 1);
}
}
</
script
>
</
form
>
</
body
>
</
html
>
Kind regards,
Dimo
the Telerik team
Do you want to have your say when we set our development plans?
Do you want to know when a feature you care about is added or when a bug fixed?
Explore the
Telerik Public Issue Tracking
system and vote to affect the priority of the items
0

Jon
Top achievements
Rank 1
answered on 21 Oct 2010, 04:22 PM
Dimo,
Thanks again for your help. Unfortunately, I couldn't get the example you provided to work with my grid. Perhaps this is because my Edit Form is deep witin the grid and not at the "rgEditForm" level. However, I did revisit this article on the Telerik site:
This example didn't work for me out-of-the-box, because this line returned null ("undefined"):
var row = RadGrid1.get_masterTableView().get_selectedItems()[0];
However using the information found in this article, I modified the JavaScript to scroll the edit form to the top of the grid like this:
<
script
type
=
"text/javascript"
>
function scrollToForm(sender, args)
{
var grid = $telerik.getElementByClassName(sender.get_element(), "rgDataDiv", "div")
var editForm = $telerik.getElementByClassName(sender.get_element(), "AccountControl", "div");
if ((grid) && (editForm))
{
window.setTimeout(function()
{
grid.scrollTop = editForm.offsetParent.offsetTop
}, 1);
}
}
</
script
>
I also added the class of "AccountControl" to the div within my user control that wraps all the controls that represent the Edit Form. Lastly, I grabbed the "rgDataDiv" element instead of "rgEditForm" as my source for the grid to use. I am using a RadGrid with a FormTemplate containing a RadTabStrip and a RadMultiPage where each page is a User Control containing the editable items (logically grouped within each tab).
This script could easily be modified to center the form within the grid space, but I decided that having it at the top was more intuitive for my purposes.
Hope this helps you or someone else!
Thanks again,
Jon