Hi ,
I am new to telerik control. I am using nested radgrid. I need to add new record detail table onclick of link button in master table. Please find the screen shot attached.
I am new to telerik control. I am using nested radgrid. I need to add new record detail table onclick of link button in master table. Please find the screen shot attached.
3 Answers, 1 is accepted
0
Princy
Top achievements
Rank 2
answered on 18 Oct 2010, 07:32 AM
Hello Negendra,
Try the following code snippet to achieve your requirement.
ASPX:
C#:
Thanks,
Princy.
Try the following code snippet to achieve your requirement.
ASPX:
<
telerik:RadGrid
ID
=
"RadGrid1"
OnItemCommand
=
"RadGrid1_ItemCommand"
OnPreRender
=
"RadGrid1_PreRender"
>
<
MasterTableView
runat
=
"server"
DataKeyNames
=
"EmployeeID"
CommandItemDisplay
=
"Top"
>
<
Columns
>
<
telerik:GridButtonColumn
CommandName
=
"AddNewItem"
Text
=
"Add New Item"
>
</
telerik:GridButtonColumn
>
</
Columns
>
<
DetailTables
>
. . . . . . . . . .
</
DetailTables
>
</
MasterTableView
>
</
telerik:RadGrid
>
C#:
protected
void
RadGrid1_ItemCommand(
object
source, GridCommandEventArgs e)
//to make the DetailTable in insert mode when clicking the 'AddNewItem' button in MasterTable
{
if
(e.CommandName ==
"AddNewItem"
)
{
GridDataItem item = (GridDataItem)e.Item;
item.Expanded =
true
;
GridTableView tableView = (GridTableView)item.ChildItem.NestedTableViews[0];
tableView.IsItemInserted =
true
;
tableView.Rebind();
}
}
protected
void
RadGrid1_PreRender(
object
sender, EventArgs e)
//to make the first row of MasterTable as expanded state.
{
RadGrid1.Items[0].Expanded =
true
;
}
Thanks,
Princy.
0
nagendra
Top achievements
Rank 1
answered on 18 Oct 2010, 08:10 AM
Thanks for the quick reply Princy.
When I click on "Add New item" in parent row, fields with header will be added in vertical way. I wanted the fields to be in single row so I inserted the code "tableView.EditMode = GridEditMode.InPlace;".
But the problem is I am not getting any "Insert/Cancel" buttons and also if I press enter keyboard button, fields with headers are again switched to vertical look.
One more question, when I display the fields in single row, some fields should be calculated in code behind and marked as read-only fields in grid. Can I achieve this kind in RadGrid control?
Thanks,
Nagendra
When I click on "Add New item" in parent row, fields with header will be added in vertical way. I wanted the fields to be in single row so I inserted the code "tableView.EditMode = GridEditMode.InPlace;".
But the problem is I am not getting any "Insert/Cancel" buttons and also if I press enter keyboard button, fields with headers are again switched to vertical look.
One more question, when I display the fields in single row, some fields should be calculated in code behind and marked as read-only fields in grid. Can I achieve this kind in RadGrid control?
Thanks,
Nagendra
0
Accepted
Princy
Top achievements
Rank 2
answered on 19 Oct 2010, 07:03 AM
Hello Negendra,
When using Inplace editmode, you need to have the EditCommandColumn displayed in order to show the insert and cancel buttons. That means you need to add one EditCommandColumn and from code behind hide the Edit links and show Insert/Cancel buttons only.
ASPX:
C#:
The following code snippet shows how to set some default values and mark these fields as RreadOnly.
C#:
Thanks,
Princy.
When using Inplace editmode, you need to have the EditCommandColumn displayed in order to show the insert and cancel buttons. That means you need to add one EditCommandColumn and from code behind hide the Edit links and show Insert/Cancel buttons only.
ASPX:
<
DetailTables
>
<
telerik:GridTableView
EditMode
=
"InPlace"
Name
=
"GridTableView1"
. . . . . .>
<
Columns
>
<
telerik:GridEditCommandColumn
UniqueName
=
"EditcolumnUniqueName"
></
telerik:GridEditCommandColumn
>
<
telerik:GridBoundColumn
DataField
=
"TerritoryID"
UniqueName
=
"TerritoryID"
></
telerik:GridBoundColumn
>
</
Columns
>
. . . . . . . . . .
</
telerik:GridTableView
>
</
DetailTables
>
C#:
// hiding the Edit links of DetailTable
protected
void
RadGrid1_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridDataInsertItem && e.Item.OwnerTableView.IsItemInserted && e.Item.OwnerTableView.Name ==
"GridTableView1"
)
// check with name of DetailTable
{
GridDataInsertItem insertItem = (GridDataInsertItem)e.Item;
GridDataItem parentitem = (GridDataItem)insertItem.OwnerTableView.ParentItem;
GridTableView tableView = (GridTableView)parentitem.ChildItem.NestedTableViews[0];
tableView.GetColumn(
"EditcolumnUniqueName"
).Visible =
true
;
foreach
(GridDataItem dataItem
in
tableView.Items)
((LinkButton)dataItem[
"EditcolumnUniqueName"
].Controls[0]).Visible =
false
;
}
else
{
foreach
(GridDataItem parentitem
in
RadGrid1.Items)
{
if
(parentitem.Expanded)
{
GridTableView tableView = (GridTableView)parentitem.ChildItem.NestedTableViews[0];
tableView.GetColumn(
"EditcolumnUniqueName"
).Visible =
false
;
}
}
}
}
The following code snippet shows how to set some default values and mark these fields as RreadOnly.
C#:
protected
void
RadGrid1_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridDataInsertItem && e.Item.OwnerTableView.IsItemInserted && e.Item.OwnerTableView.Name ==
"GridTableView1"
)
{
GridDataInsertItem insertItem = (GridDataInsertItem)e.Item;
TextBox txt = (TextBox)insertItem[
"TerritoryID"
].Controls[0];
// accessing the control using its UniqueName
txt.Text =
"1234"
;
txt.ReadOnly =
true
;
}
}
Thanks,
Princy.