Hi
I’m using hierarchy RadGrid for my application, in which I’m using the master/parent table to show the total amount of the detail table row amounts. So when the user updates the amount in detail table, I have to update the total amount in the master table. But the master table doesn’t refresh automatically after the detail table is updated. When I try to rebind the grid after I update the detail table, it throws an exception saying “OrderDetailsID is neither a DataColumn nor a DataRelation for table Table.” I’m using ItemCommand method for updating detail table. Please help me to solve this problem.
Here is the Code:
protected void gridOrders_ItemCommand(object source, GridCommandEventArgs e)
{
lblStatus.Text = String.Empty;
int OrderID;
int OrderDetailsID;
String ItemName;
Double Amount;
switch (e.CommandName.ToUpper())
{
case "UPDATE":
if (e.Item.OwnerTableView.Name == "OrderDetails")
{
GridEditableItem editedItem = e.Item as GridEditableItem;
OrderDetailsID = int.Parse(editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["OrderDetailsID"].ToString());
OrderID = int.Parse(editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["OrderID"].ToString());
ItemName = (editedItem[
"ItemName"].Controls[1] as RadTextBox).Text;
Amount = Double.Parse((editedItem["Amount"].Controls[1] as RadNumericTextBox).Text.ToString());
try
{
//Update Order Details
String cmdText = "UPDATE [OrderDetails] SET ItemName = '"+ ItemName +"', Amount = " + Amount + " WHERE OrderDetailsID = " + OrderDetailsID;
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbCmd = db.GetSqlStringCommand(cmdText);
db.ExecuteNonQuery(dbCmd);
//Update Orders
UpdateOrders(OrderID);
gridOrders.MasterTableView.Rebind(); ---------------------------------------------->> This line causes the exception.
}
catch (Exception ex)
{
lblStatus.Text = ex.Message;
}
}
break;
}
}
protected void gridOrders_NeedDataSource1(object source, GridNeedDataSourceEventArgs e)
{
try
{
string cmdText = @"SELECT OrderID, PersonName, Amount FROM [Order]";
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbCmd = db.GetSqlStringCommand(cmdText);
DataSet orderDataSet = db.ExecuteDataSet(dbCmd); gridOrders.DataSource = (DataTable)orderDataSet.Tables[0];
}
catch (Exception ex)
{
lblStatus.Text = ex.Message;
}
}
protected void gridOrders_DetailTableDataBind(object source, GridDetailTableDataBindEventArgs e)
{
GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;
string OrderID = dataItem.GetDataKeyValue("OrderID").ToString();
if (e.DetailTableView.Name == "OrderDetails")
{
try
{
string cmdText = @"SELECT * FROM OrderDetails WHERE OrderID = " + OrderID;
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbCmd = db.GetSqlStringCommand(cmdText);
DataSet detailDataSet = db.ExecuteDataSet(dbCmd);
e.DetailTableView.DataSource = (DataTable)detailDataSet.Tables[0];
}
catch (Exception ex)
{
lblStatus.Text = ex.Message;
}
}
}
<telerik:RadGrid ID="gridOrders" runat="server" AutoGenerateColumns="False" GridLines="None"
Width="600px" onitemcommand="gridOrders_ItemCommand" onneeddatasource="gridOrders_NeedDataSource1" ShowFooter="true"
ondetailtabledatabind="gridOrders_DetailTableDataBind" >
<MasterTableView DataKeyNames="OrderID" Width="100%" Name="Orders">
<DetailTables>
<telerik:GridTableView DataKeyNames="OrderDetailsID,OrderID" Width="100%" runat="server"
Name="OrderDetails" CommandItemDisplay="Top">
<ParentTableRelation>
<telerik:GridRelationFields DetailKeyField="OrderID" MasterKeyField="OrderID" />
</ParentTableRelation>
<Columns>
<telerik:GridEditCommandColumn ButtonType="ImageButton">
</telerik:GridEditCommandColumn>
<telerik:GridTemplateColumn HeaderText="Item Name" UniqueName="ItemName">
<ItemTemplate>
<asp:Label ID="lblItemName" runat="server" Text='<%# Eval("ItemName") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadTextBox ID="tbItemName" runat="server" Text='<%# Bind("ItemName") %>'
Width="135px" >
</telerik:RadTextBox>
<span style="color: Red">*</span>
<asp:RequiredFieldValidator ID="rfvItemName" runat="server"
ControlToValidate="tbItemName" ErrorMessage="Item Name is required!">
</asp:RequiredFieldValidator>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Amount" UniqueName="Amount" >
<ItemTemplate>
<asp:Label ID="lblAmount" runat="server" Text='<%# Eval("Amount", "{0:C}") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<br />
<telerik:RadNumericTextBox ID="tbAmount" Runat="server" Text='<%# Bind("Amount") %>'
MinValue="0" Width="135px" NumberFormat-AllowRounding="True" NumberFormat-DecimalDigits="2">
</telerik:RadNumericTextBox>
<span style="color: Red">*</span>
<asp:RequiredFieldValidator ID="rfvAmount" runat="server"
ControlToValidate="tbAmount" ErrorMessage="Amount is required!">
</asp:RequiredFieldValidator>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridButtonColumn CommandName="Delete" Text="Delete" ButtonType="ImageButton"
ConfirmText="Are you sure you want to delete this record?" ConfirmTitle="Confirm Delete" UniqueName="column">
</telerik:GridButtonColumn>
</Columns>
</telerik:GridTableView>
</DetailTables>
<Columns>
<telerik:GridBoundColumn DataField="PersonName" EmptyDataText="&nbsp;"
HeaderText="Name" UniqueName="PersonName">
<HeaderStyle Height="20px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Amount" EmptyDataText="&nbsp;" DataFormatString="{0:C}" Aggregate="Sum"
HeaderText="Amount" UniqueName="Amount">
<HeaderStyle Height="20px" />
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
<HeaderStyle HorizontalAlign="Center" />
<FilterMenu EnableTheming="True">
<CollapseAnimation Duration="200" Type="OutQuint" />
</FilterMenu>
</telerik:RadGrid>
Thanks,
Sentha.


public class ReportModelObject { private string m_CompanyCode; private string m_CompanyDescription; private string m_CountryCode; private string m_CountryDescription; private string m_SiteCode; private string m_SiteDescription; public ReportModelObject() { } public string CompanyCode { get { return m_CompanyCode; } set { m_CompanyCode = value; NotifyPropertyChanged("CompanyCode"); } } public string CompanyDescription { get { return m_CompanyDescription; } set { m_CompanyDescription = value; NotifyPropertyChanged("CompanyDescription"); } } public string CountryCode { get { return m_CountryCode; } set { m_CountryCode = value; NotifyPropertyChanged("CountryCode"); } } public string CountryDescription { get { return m_CountryDescription; } set { m_CountryDescription = value; NotifyPropertyChanged("CountryDescription"); } } public string SiteCode { get { return m_SiteCode; } set { m_SiteCode = value; NotifyPropertyChanged("SiteCode"); } } public string SiteDescription { get { return m_SiteDescription; } set { m_SiteDescription = value; NotifyPropertyChanged("SiteDescription"); } } #region INotifyPropertyChanged Implementation [field: NonSerialized] public event PropertyChangedEventHandler PropertyChanged; protected void NotifyPropertyChanged(string name) { if (PropertyChanged != null) PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(name)); } #endregion }How to get Radgrid dropdown list template column selected value in InsertCommand?
I used below, doesn't work. Also, how to make the text filter work for a dropdownlist column?
DropDownList dl;
dl = newItem[
"Language"].Controls[0] as DropDownList;
String SelectLanguageID = dl.SelectedValue;
----------------------------------------------------------------
<telerik:GridTemplateColumn HeaderText="Language" UniqueName="Language"
AutoPostBackOnFilter="true" CurrentFilterFunction="Contains"
ShowFilterIcon="false" FilterControlWidth="200px" >
<EditItemTemplate>
<asp:DropDownList ID="ddlLanguage" runat="server">
</asp:DropDownList>
</EditItemTemplate>
<FooterTemplate>
<asp:Label ID="lblLanguage" runat="server">
</asp:Label>
</FooterTemplate>
<ItemTemplate>
</ItemTemplate>
</telerik:GridTemplateColumn>
Thanks!



39e - JavaScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 404telerik:RadGrid runat="server" ID="RadGrid1" AutoGenerateColumns="false" AllowCustomPaging="false" AllowPaging="True" PageSize="3" OnPageIndexChanged="RadGrid2PageIndexChanged" OnNeedDataSource="radGridOnNeedDataSource" ><br> <PagerStyle Mode="NextPrevAndNumeric" Position="TopAndBottom" PageSizeControlType="RadComboBox"></PagerStyle><br> <MasterTableView><br> <Columns><br> <telerik:GridBoundColumn DataField="ArticlegroupID" HeaderText="ArticleGrouipID" UniqueName="groupID"> <br> </telerik:GridBoundColumn><br><br> <telerik:GridBoundColumn DataField="SpecialWord" HeaderText="ProductDescription" UniqueName="ProductDescr" ><br> </telerik:GridBoundColumn> <br> <telerik:GridImageColumn DataType="System.String" DataImageUrlFields="ImageFile"<br> AlternateText="Customer image" <br> ImageAlign="Middle" ImageHeight="100px" ImageWidth="82px" HeaderText="Image Column"><br> </telerik:GridImageColumn> <br> </Columns><br> </MasterTableView><br><br><br><br> </telerik:RadGrid> protected void radGridOnNeedDataSource(object source, GridNeedDataSourceEventArgs e)
{ RadGrid p_RadIconProducts = this.FindControl("RadGrid1") as RadGrid;
List<WebServiceBeaMenu> radTileIcon = new List<WebServiceBeaMenu>();
radTileIcon = MvcBeaDAL.WebServiceBea.GetArticle(p_menuID, p_articlegroupID, 1).ToList(); p_RadIconProducts.DataSource = radTileIcon;<br>
p_RadIconProducts.MasterTableView.VirtualItemCount = radTileIcon.Count;<br> p_RadIconProducts.CurrentPageIndex = p_RadIconProducts.MasterTableView.CurrentPageIndex;<br><br><br> }