Hi,
We have to grids on a page that when on the update/insert command event, if the validation code finds an error, it adds an exclamation mark image to GridEditCommandColumn along with a corresponding tooltip to let the user know what the error was and where. It works perfectly in the top grid, which is essentially a parent grid for the one below it. The code below is showing how the validation/error works for both grids:
protected void FundGrid_InsertCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
{
Telerik.Web.UI.GridEditableItem editedItem = e.Item as Telerik.Web.UI.GridEditableItem;
Hashtable newValues = new Hashtable();
editedItem.ExtractValues(newValues);
Decimal grndkey = (Decimal)GroundGrid.MasterTableView.DataKeyValues[GroundGrid.SelectedItems[0].ItemIndex][GroundCardColumn.GroundId.ToString()];
newValues[GroundFundingColumn.GroundId.ToString()] = grndkey;
List<String> errorlist = new List<string>();
GroundFunding gf = null;
e.Canceled = !((IGroundCardTask)ServiceManager).UpdateFunding(this.UserContext, ref gf, newValues, errorlist);
if (e.Canceled)
showGridRowUpdateError(editedItem, errorlist);
else
{
if (errorlist.Count > 0)
{
handleFundingStatusChangedNotification(gf.GroundId, errorlist);
}
}
}
And the following code is how the edit item and error list are displayed to the customer:
private void showGridRowUpdateError(Telerik.Web.UI.GridEditableItem editItem, List<String> errors)
{
//
TableCell cmdCell = ((Telerik.Web.UI.GridDataItem)editItem)["Cmd"];
Image img = new Image();
img.ID = "ErrorImage";
img.ImageUrl = "~/Images/ErrorAlertSmall.gif";
img.CssClass = "ErrorAlertPopup";
cmdCell.Controls.Add(img);
BulletedList bulletList = new BulletedList();
bulletList.ID = "ErrorList";
bulletList.CssClass = "ErrorBulletList";
foreach (String sMessage in errors)
{
bulletList.Items.Add(new ListItem(sMessage));
}
ErrorToolTip.TargetControlID = img.ClientID;
ErrorToolTip.IsClientID = true;
ErrorToolTip.Controls.Add(bulletList);
ErrorToolTip.Show();
}
For some reason, this does not work on on the bottom Funding Grid. Works perfectly everywhere else in the solution, but not here. The grid is marked up as follows:
<telerik:RadGrid ID="FundGrid" runat="server"
AutoGenerateColumns="False"
GridLines="None"
Width="740px"
onneeddatasource="FundGrid_NeedDataSource"
onitemdatabound="FundGrid_ItemDataBound"
OnItemCreated="FundGrid_ItemCreated"
ondeletecommand="FundGrid_DeleteCommand"
oninsertcommand="FundGrid_InsertCommand"
onupdatecommand="FundGrid_UpdateCommand"
OnDataBound="FundGrid_DataBound"
AllowMultiRowEdit="false"
Enabled="false"
EnableLinqExpressions="false">
<MasterTableView Caption="Funding Data for Ground Card: " EditMode="InPlace" ShowFooter="True" DataKeyNames="GroundId,FundingOrdBy" Width="740px">
<RowIndicatorColumn>
<HeaderStyle Width="20px" />
</RowIndicatorColumn>
<ExpandCollapseColumn>
<HeaderStyle Width="20px" />
</ExpandCollapseColumn>
<Columns>
<telerik:GridEditCommandColumn UniqueName="cmd" CancelText="Go Bac" EditText="Edit" InsertText="Insert"
UpdateText="Update" ButtonType="ImageButton">
<HeaderStyle Width="50px" />
</telerik:GridEditCommandColumn>
<telerik:GridBoundColumn HeaderText="Ground Id" DataField="GroundId" UniqueName="GroundId" ReadOnly="true" Visible="false">
<HeaderStyle Width="100px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Receiver Cost Ctr" DataField="ReceiverCostCtr" UniqueName="ReceiverCostCtr" MaxLength="10">
<HeaderStyle Width="110px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Receiver Network" DataField="ReceiverNetwork" UniqueName="ReceiverNetwork" MaxLength="24">
<HeaderStyle Width="150px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Receiver Activity" DataField="ReceiverOperation" UniqueName="ReceiverOperation" MaxLength="8">
<HeaderStyle Width="110px" />
</telerik:GridBoundColumn>
<telerik:GridNumericColumn HeaderText="Hours" DataType="System.Decimal" Aggregate="Sum" FooterText=" " DataField="Hrs" DataFormatString="{0:F1}" UniqueName="Hrs" MaxLength="5">
<HeaderStyle Width="40px" />
</telerik:GridNumericColumn>
</Columns>
</MasterTableView>
<ClientSettings>
<Selecting AllowRowSelect="True" />
<Scrolling AllowScroll="True" ScrollHeight="90px" UseStaticHeaders="True" />
<ClientEvents OnRowContextMenu="FundingRowContextMenu" OnRowDblClick="RowDblClick" />
</ClientSettings>
</telerik:RadGrid>
Any help at all would be appreciated. Been struggling with this for several days and have not been able to add/clear any of the controls on the grid column.
Thanks,
- Joe
We have to grids on a page that when on the update/insert command event, if the validation code finds an error, it adds an exclamation mark image to GridEditCommandColumn along with a corresponding tooltip to let the user know what the error was and where. It works perfectly in the top grid, which is essentially a parent grid for the one below it. The code below is showing how the validation/error works for both grids:
protected void FundGrid_InsertCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
{
Telerik.Web.UI.GridEditableItem editedItem = e.Item as Telerik.Web.UI.GridEditableItem;
Hashtable newValues = new Hashtable();
editedItem.ExtractValues(newValues);
Decimal grndkey = (Decimal)GroundGrid.MasterTableView.DataKeyValues[GroundGrid.SelectedItems[0].ItemIndex][GroundCardColumn.GroundId.ToString()];
newValues[GroundFundingColumn.GroundId.ToString()] = grndkey;
List<String> errorlist = new List<string>();
GroundFunding gf = null;
e.Canceled = !((IGroundCardTask)ServiceManager).UpdateFunding(this.UserContext, ref gf, newValues, errorlist);
if (e.Canceled)
showGridRowUpdateError(editedItem, errorlist);
else
{
if (errorlist.Count > 0)
{
handleFundingStatusChangedNotification(gf.GroundId, errorlist);
}
}
}
And the following code is how the edit item and error list are displayed to the customer:
private void showGridRowUpdateError(Telerik.Web.UI.GridEditableItem editItem, List<String> errors)
{
//
TableCell cmdCell = ((Telerik.Web.UI.GridDataItem)editItem)["Cmd"];
Image img = new Image();
img.ID = "ErrorImage";
img.ImageUrl = "~/Images/ErrorAlertSmall.gif";
img.CssClass = "ErrorAlertPopup";
cmdCell.Controls.Add(img);
BulletedList bulletList = new BulletedList();
bulletList.ID = "ErrorList";
bulletList.CssClass = "ErrorBulletList";
foreach (String sMessage in errors)
{
bulletList.Items.Add(new ListItem(sMessage));
}
ErrorToolTip.TargetControlID = img.ClientID;
ErrorToolTip.IsClientID = true;
ErrorToolTip.Controls.Add(bulletList);
ErrorToolTip.Show();
}
For some reason, this does not work on on the bottom Funding Grid. Works perfectly everywhere else in the solution, but not here. The grid is marked up as follows:
<telerik:RadGrid ID="FundGrid" runat="server"
AutoGenerateColumns="False"
GridLines="None"
Width="740px"
onneeddatasource="FundGrid_NeedDataSource"
onitemdatabound="FundGrid_ItemDataBound"
OnItemCreated="FundGrid_ItemCreated"
ondeletecommand="FundGrid_DeleteCommand"
oninsertcommand="FundGrid_InsertCommand"
onupdatecommand="FundGrid_UpdateCommand"
OnDataBound="FundGrid_DataBound"
AllowMultiRowEdit="false"
Enabled="false"
EnableLinqExpressions="false">
<MasterTableView Caption="Funding Data for Ground Card: " EditMode="InPlace" ShowFooter="True" DataKeyNames="GroundId,FundingOrdBy" Width="740px">
<RowIndicatorColumn>
<HeaderStyle Width="20px" />
</RowIndicatorColumn>
<ExpandCollapseColumn>
<HeaderStyle Width="20px" />
</ExpandCollapseColumn>
<Columns>
<telerik:GridEditCommandColumn UniqueName="cmd" CancelText="Go Bac" EditText="Edit" InsertText="Insert"
UpdateText="Update" ButtonType="ImageButton">
<HeaderStyle Width="50px" />
</telerik:GridEditCommandColumn>
<telerik:GridBoundColumn HeaderText="Ground Id" DataField="GroundId" UniqueName="GroundId" ReadOnly="true" Visible="false">
<HeaderStyle Width="100px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Receiver Cost Ctr" DataField="ReceiverCostCtr" UniqueName="ReceiverCostCtr" MaxLength="10">
<HeaderStyle Width="110px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Receiver Network" DataField="ReceiverNetwork" UniqueName="ReceiverNetwork" MaxLength="24">
<HeaderStyle Width="150px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Receiver Activity" DataField="ReceiverOperation" UniqueName="ReceiverOperation" MaxLength="8">
<HeaderStyle Width="110px" />
</telerik:GridBoundColumn>
<telerik:GridNumericColumn HeaderText="Hours" DataType="System.Decimal" Aggregate="Sum" FooterText=" " DataField="Hrs" DataFormatString="{0:F1}" UniqueName="Hrs" MaxLength="5">
<HeaderStyle Width="40px" />
</telerik:GridNumericColumn>
</Columns>
</MasterTableView>
<ClientSettings>
<Selecting AllowRowSelect="True" />
<Scrolling AllowScroll="True" ScrollHeight="90px" UseStaticHeaders="True" />
<ClientEvents OnRowContextMenu="FundingRowContextMenu" OnRowDblClick="RowDblClick" />
</ClientSettings>
</telerik:RadGrid>
Any help at all would be appreciated. Been struggling with this for several days and have not been able to add/clear any of the controls on the grid column.
Thanks,
- Joe