6 Answers, 1 is accepted
0

Princy
Top achievements
Rank 2
answered on 25 Oct 2013, 02:59 AM
Hi Tim,
You can check if the first insert has occurred then disable the AddNewRecord button in the PreRender event as shown below:
C#:
Thanks,
Princy
You can check if the first insert has occurred then disable the AddNewRecord button in the PreRender event as shown below:
C#:
bool
IsInsert=
false
;
protected
void
RadGrid1_InsertCommand(
object
sender, Telerik.Web.UI.GridCommandEventArgs e)
{
IsInsert =
true
;
//Code to Insert
}
protected
void
RadGrid1_PreRender(
object
sender, EventArgs e)
{
if
(IsInsert)
{
RadGrid1.MasterTableView.CommandItemSettings.ShowAddNewRecordButton =
false
;
RadGrid1.Rebind();
}
}
Thanks,
Princy
0

Tim
Top achievements
Rank 1
answered on 25 Oct 2013, 01:28 PM
Thanx Princy, however when I use the Rebind, my DetailsTableView doesn't get bound? I'm using Advanced DataBinding.
Public
Shared
RevenuesList
As
New
List(Of Revenues)
Public
Shared
IsInsert
As
Boolean
=
False
#Region "RevenuesGrid Grid"
Private
Sub
RevenuesGrid_DetailTableDataBind(sender
As
Object
, e
As
GridDetailTableDataBindEventArgs)
Handles
RevenuesGrid.DetailTableDataBind
Dim
dataItem
As
GridDataItem =
CType
(e.DetailTableView.ParentItem, GridDataItem)
If
e.DetailTableView.Name =
"Tracking"
Then
Dim
id
As
Integer
=
CType
(dataItem.GetDataKeyValue(
"SourceID"
),
Integer
)
e.DetailTableView.DataSource = RevenuesList.ToList.Where(
Function
(c
As
Revenues) c.ParentID = id)
End
If
End
Sub
Private
Sub
RevenuesGrid_ItemDataBound(sender
As
Object
, e
As
GridItemEventArgs)
Handles
RevenuesGrid.ItemDataBound
If
"Tracking"
.Equals(e.Item.OwnerTableView.Name)
Then
If
e.Item.IsInEditMode
Then
Dim
EditItem
As
GridEditableItem = TryCast(e.Item, GridEditableItem)
Dim
parentItem =
CType
(e.Item.OwnerTableView.ParentItem, GridDataItem)
Dim
txtRecipient
As
TextBox = TryCast(EditItem.FindControl(
"txtRecipient"
), TextBox)
Dim
pnlRecipient
As
Panel = TryCast(EditItem.FindControl(
"pnlRecipient"
), Panel)
'Do not do if PS
If
(
Not
parentItem
Is
Nothing
)
Then
Dim
ParentId
As
Integer
=
DirectCast
(parentItem.OwnerTableView.DataKeyValues(parentItem.ItemIndex)(
"SourceID"
),
Integer
)
If
Not
ParentId = 1
Then
If
Not
(
TypeOf
e.Item
Is
IGridInsertItem)
Then
txtRecipient.Text = DataBinder.Eval(e.Item.DataItem,
"Source"
)
End
If
Else
txtRecipient.Visible =
False
pnlRecipient.Visible =
False
End
If
End
If
If
(
TypeOf
e.Item
Is
GridFooterItem)
Then
Dim
footerItem
As
GridFooterItem =
DirectCast
(e.Item, GridFooterItem)
Dim
lblFinancialAggregateTotal
As
Label =
DirectCast
(footerItem.FindControl(
"lblRevenuesGridFinancialAggregateTotal"
), Label)
Dim
lblInKindAggregateTotal
As
Label =
DirectCast
(footerItem.FindControl(
"lblRevenuesGridInKindAggregateTotal"
), Label)
lblFinancialAggregateTotal.Text =
"Total: "
lblInKindAggregateTotal.Text =
"Total: "
End
If
End
If
End
If
End
Sub
Private
Sub
RevenuesGrid_InsertCommand(sender
As
Object
, e
As
GridCommandEventArgs)
Handles
RevenuesGrid.InsertCommand
If
"Tracking"
.Equals(e.Item.OwnerTableView.Name)
Then
Page.Validate(
"Tracking"
)
If
Page.IsValid
Then
End
If
If
(e.Item.IsInEditMode)
Then
If
(
TypeOf
e.Item
Is
GridDataInsertItem)
AndAlso
(e.Item.OwnerTableView.IsItemInserted)
Then
Dim
gridEditFormItem
As
GridEditableItem =
DirectCast
(e.Item, GridEditableItem)
Dim
parentItem =
CType
(e.Item.OwnerTableView.ParentItem, GridDataItem)
If
(
Not
parentItem
Is
Nothing
)
Then
Dim
ParentId
As
Integer
=
DirectCast
(parentItem.OwnerTableView.DataKeyValues(parentItem.ItemIndex)(
"SourceID"
),
Integer
)
Dim
txtRecipient
As
TextBox = TryCast(gridEditFormItem.FindControl(
"txtRecipient"
), TextBox)
Dim
RecipientYesNo
As
RadioButtonList = TryCast(gridEditFormItem.FindControl(
"RecipientYesNo"
), RadioButtonList)
Dim
newValues
As
New
Hashtable()
e.Item.OwnerTableView.ExtractValuesFromItem(newValues, gridEditFormItem)
Dim
Financial
As
Decimal
= newValues(
"Financial"
).ToString()
Dim
InKind
As
Decimal
= newValues(
"InKind"
).ToString()
'Give a Unique Index to track this Entry
Dim
TrackingId
As
String
= System.Guid.NewGuid().ToString().Split(
"-"
c)(0)
'Is Source PS
If
ParentId = 1
Then
RevenuesList.Add(
New
Revenues(TrackingId,
"PS"
, Financial, InKind, ParentId, 1))
IsInsert =
True
Else
RevenuesList.Add(
New
Revenues(TrackingId, txtRecipient.Text, Financial, InKind, ParentId, RecipientYesNo.SelectedValue))
End
If
RevenuesList = RevenuesList.OrderBy(
Function
(c) c.Source).ToList
'Update the Amounts in the footer
Dim
footerItem
As
GridFooterItem =
DirectCast
(RevenuesGrid.MasterTableView.GetItems(GridItemType.Footer)(0), GridFooterItem)
Dim
FinancialAggregateTotal
As
Label =
DirectCast
(footerItem.FindControl(
"RevenuesGridFinancialAggregateTotal"
), Label)
Dim
InKindAggregateTotal
As
Label =
DirectCast
(footerItem.FindControl(
"RevenuesGridInKindAggregateTotal"
), Label)
Dim
lblSourceTotal
As
Label =
DirectCast
(footerItem.FindControl(
"lblSourceTotal"
), Label)
Dim
RevenuesGridAggregateTotal
As
Label =
DirectCast
(footerItem.FindControl(
"RevenuesGridAggregateTotal"
), Label)
FinancialAggregateTotal.Text =
String
.Format(
"{0:$###,##0.00}"
, RevenuesList.Where(
Function
(x) x.ParentID <> 4).Sum(
Function
(x) x.Financial))
InKindAggregateTotal.Text =
String
.Format(
"{0:$###,##0.00}"
, RevenuesList.Where(
Function
(x) x.ParentID <> 4).Sum(
Function
(x) x.InKind))
End
If
End
If
End
If
End
If
End
Sub
Private
Sub
RevenuesGrid_UpdateCommand(sender
As
Object
, e
As
GridCommandEventArgs)
Handles
RevenuesGrid.UpdateCommand
Dim
gridEditFormItem
As
GridEditableItem =
DirectCast
(e.Item, GridEditableItem)
Dim
parentItem =
CType
(e.Item.OwnerTableView.ParentItem, GridDataItem)
If
(
Not
parentItem
Is
Nothing
)
Then
Dim
ParentId
As
Integer
=
DirectCast
(parentItem.OwnerTableView.DataKeyValues(parentItem.ItemIndex)(
"SourceID"
),
Integer
)
Dim
txtRecipient
As
TextBox = TryCast(gridEditFormItem.FindControl(
"txtRecipient"
), TextBox)
Dim
RecipientYesNo
As
RadioButtonList = TryCast(gridEditFormItem.FindControl(
"RecipientYesNo"
), RadioButtonList)
Dim
oldTrackingId
As
String
= gridEditFormItem.OwnerTableView.DataKeyValues(gridEditFormItem.ItemIndex)(
"TrackingId"
).ToString()
'DELETE THE OLD VALUES FIRST
RevenuesList = RevenuesList.Where(
Function
(c) c.TrackingId <> oldTrackingId).ToList
Dim
newValues
As
New
Hashtable()
e.Item.OwnerTableView.ExtractValuesFromItem(newValues, gridEditFormItem)
Dim
Financial
As
Decimal
= newValues(
"Financial"
).ToString()
Dim
InKind
As
Decimal
= newValues(
"InKind"
).ToString()
'Give a Unique Index to track this Entry
Dim
TrackingId
As
String
= System.Guid.NewGuid().ToString().Split(
"-"
c)(0)
RevenuesList.Add(
New
Revenues(TrackingId, txtRecipient.Text, Financial, InKind, ParentId, RecipientYesNo.SelectedValue))
RevenuesList = RevenuesList.OrderBy(
Function
(c) c.Source).ToList
'Update the Amounts in the footer
Dim
footerItem
As
GridFooterItem =
DirectCast
(RevenuesGrid.MasterTableView.GetItems(GridItemType.Footer)(0), GridFooterItem)
Dim
FinancialAggregateTotal
As
Label =
DirectCast
(footerItem.FindControl(
"RevenuesGridFinancialAggregateTotal"
), Label)
Dim
InKindAggregateTotal
As
Label =
DirectCast
(footerItem.FindControl(
"RevenuesGridInKindAggregateTotal"
), Label)
FinancialAggregateTotal.Text =
String
.Format(
"{0:$###,##0.00}"
, RevenuesList.Where(
Function
(x) x.ParentID <> 4).Sum(
Function
(x) x.Financial))
InKindAggregateTotal.Text =
String
.Format(
"{0:$###,##0.00}"
, RevenuesList.Where(
Function
(x) x.ParentID <> 4).Sum(
Function
(x) x.InKind))
End
If
End
Sub
Private
Sub
RevenuesGrid_NeedDataSource(sender
As
Object
, e
As
GridNeedDataSourceEventArgs)
Handles
RevenuesGrid.NeedDataSource
Dim
RevenuesSource
As
New
List(Of RevenuesSource)
RevenuesSource.Add(
New
RevenuesSource(
"PS"
, 1))
RevenuesSource.Add(
New
RevenuesSource(
"Other Government"
, 2))
RevenuesSource.Add(
New
RevenuesSource(
"Non-Government"
, 3))
RevenuesGrid.DataSource = RevenuesSource.ToList
End
Sub
Private
Sub
RevenuesGrid_PreRender(sender
As
Object
, e
As
EventArgs)
Handles
RevenuesGrid.PreRender
If
IsInsert
Then
RevenuesGrid.MasterTableView.CommandItemSettings.ShowAddNewRecordButton =
False
RevenuesGrid.Rebind()
End
If
End
Sub
#End Region
Public
Class
Revenues
Public
Sub
New
(
ByVal
TrackingId
As
String
,
ByVal
Source
As
String
,
ByVal
Financial
As
Integer
,
ByVal
InKind
As
Integer
, ParentID
As
Integer
, RecipientType
As
Integer
)
_TrackingId = TrackingId
_Source = Source
'_SourceId = SourceId
_Financial = Financial
_InKind = InKind
_ParentID = ParentID
_RecipientType = RecipientType
End
Sub
Private
_TrackingId
As
String
=
"Empty"
Property
TrackingId
As
String
Get
Return
_TrackingId
End
Get
Set
(
ByVal
value
As
String
)
_TrackingId = value
End
Set
End
Property
Private
_Source
As
String
=
"Empty"
Public
Property
Source()
As
String
Get
Return
_Source
End
Get
Set
(
ByVal
value
As
String
)
_Source = value
End
Set
End
Property
Private
_SourceId
As
Integer
Property
SourceId
As
Integer
Get
Return
_SourceId
End
Get
Set
(
ByVal
value
As
Integer
)
_SourceId = value
End
Set
End
Property
Private
_Financial
As
Integer
Property
Financial
As
Integer
Get
Return
_Financial
End
Get
Set
(
ByVal
value
As
Integer
)
_Financial = value
End
Set
End
Property
Private
_InKind
As
Integer
Property
InKind
As
Integer
Get
Return
_InKind
End
Get
Set
(
ByVal
value
As
Integer
)
_InKind = value
End
Set
End
Property
Private
_ParentID
As
Integer
Property
ParentID
As
Integer
Get
Return
_ParentID
End
Get
Set
(
ByVal
value
As
Integer
)
_ParentID = value
End
Set
End
Property
Private
_RecipientType
As
Integer
Property
RecipientType
As
Integer
Get
Return
_RecipientType
End
Get
Set
(
ByVal
value
As
Integer
)
_RecipientType = value
End
Set
End
Property
End
Class
Public
Class
RevenuesSource
Private
_Source
As
String
=
String
.Empty
Property
Source
As
String
Get
Return
_Source
End
Get
Set
(
ByVal
value
As
String
)
_Source = value
End
Set
End
Property
Private
_SourceID
As
Integer
Property
SourceID
As
Integer
Get
Return
_SourceID
End
Get
Set
(
ByVal
value
As
Integer
)
_SourceID = value
End
Set
End
Property
Sub
New
(
ByVal
Source
As
String
, SourceID
As
Integer
)
_Source = Source
_SourceID = SourceID
End
Sub
End
Class
0
Hi Tim,
In the provided code the Rebind() method is called in the PreRender event handler. This should be avoided. When an item in the RadGrid is expanded the Rebind() method is called implicitly.
I am attaching a sample project created with the provided code. I have made a few modifications. The ShowAddNewRecordButton property is set to false in the InsertCommand handler. This way there is no need for the IsInserted variable.
Regards,
Viktor Tachev
Telerik
In the provided code the Rebind() method is called in the PreRender event handler. This should be avoided. When an item in the RadGrid is expanded the Rebind() method is called implicitly.
I am attaching a sample project created with the provided code. I have made a few modifications. The ShowAddNewRecordButton property is set to false in the InsertCommand handler. This way there is no need for the IsInserted variable.
Regards,
Viktor Tachev
Telerik
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to the blog feed now.
0

Tim
Top achievements
Rank 1
answered on 30 Oct 2013, 02:02 PM
Victor, while your example does work, I cannot get mine grid to do the same. I'm wondering if its becuase i'm using EditMode="InPlace"?
0
Hi Tim,
The InsertCommand is fired after clicking the Insert button in the form. The EditForm property should not matter in this case. The scenario is working as expected on my side with both InPlace and EditForms edit mode.
Try removing all code from the RadGrid's PreRender event handler and ensure that the following line is executed in the InsertCommand handler.
You could first try commenting out the rest of the code in ItemCommand to make sure that the "Add new Item" button disappears after clicking Insert.
If the issue persists would you send a support ticket with runnable project where the problem is observed. This would enable us to better understand your scenario and provide appropriate solution.
Regards,
Viktor Tachev
Telerik
The InsertCommand is fired after clicking the Insert button in the form. The EditForm property should not matter in this case. The scenario is working as expected on my side with both InPlace and EditForms edit mode.
Try removing all code from the RadGrid's PreRender event handler and ensure that the following line is executed in the InsertCommand handler.
RevenuesGrid.MasterTableView.CommandItemSettings.ShowAddNewRecordButton =
False
You could first try commenting out the rest of the code in ItemCommand to make sure that the "Add new Item" button disappears after clicking Insert.
If the issue persists would you send a support ticket with runnable project where the problem is observed. This would enable us to better understand your scenario and provide appropriate solution.
Regards,
Viktor Tachev
Telerik
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to the blog feed now.
0

Ramya
Top achievements
Rank 1
answered on 19 Dec 2017, 07:34 AM
I am trying to hide the ShowAddNewRecordButton using the following code after checking a condition that my grid is empty. if there is a record already present then I have hide the ShowAddNewRecordButton button else it should be visible as default.
In UI <CommandItemSettings ShowAddNewRecordButton="true" ShowRefreshButton="false" />
is added
In RadGridAdditionalInfo_PreRender(object sender, EventArgs e)
RadGridAdditionalInfo.MasterTableView.CommandItemSettings.ShowAddNewRecordButton = false;
is added. But it is not working eventhough this method is triggered and the even after clr reads this line there no change.
The Grid is displayed with Add New Record.
FootNote:
AddNewRecordButton and InitInsertButton are null in my case.