<Content> <div id="textContainer" contenteditable="false" unselectable="on"> <div id="paddingContainer" contenteditable="false" unselectable="on"> <div id="classifiedArea" contenteditable="true" unselectable="off"> </div></div></div></Content><div id="textContainer" contenteditable="false" unselectable="on"> <div id="paddingContainer" contenteditable="false" unselectable="on"> <div id="classifiedArea" contenteditable="true" unselectable="off" style="width: 172.8px; font-family: HELVETICA; font-size: 14px; line-height: 22px; min-height: 22px;">Line 1<br>Line 2<br>Etc</div></div></div><!-- End --><div id="textContainer" contenteditable="false" unselectable="on"> <div id="paddingContainer" contenteditable="false" unselectable="on"> <div id="classifiedArea" contenteditable="true" unselectable="off" style="width: 172.8px; font-family: HELVETICA; font-size: 14px; line-height: 22px; min-height: 22px;">Line 1</div><p id="classifiedArea" contenteditable="true" unselectable="off" style="width: 172.8px; font-family: HELVETICA; font-size: 14px; line-height: 22px; min-height: 22px;">Line 2</p><p id="classifiedArea" contenteditable="true" unselectable="off" style="width: 172.8px; font-family: HELVETICA; font-size: 14px; line-height: 22px; min-height: 22px;">Line 3</p></div></div>protected void Page_Load(object sender, EventArgs e){ if (!IsPostBack) { string[] viewPaths = new string[] { @"C:\Test2", @"\\CHRISTIAN_KING2\Test1" }; RadFileExplorer1.Configuration.ViewPaths = viewPaths; }}protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { lblURL.Style.Add("display", "none"); txtURL.Style.Add("display", "none"); lblUpload.Style.Add("display", "none"); uplAttachment.Style.Add("display", "none"); lblFileName.Style.Add("display", "none"); lblFileNameValue.Style.Add("display", "none"); optAttachment.Checked = false; optURL.Checked = false; optNone.Checked = true; taskID = Request.QueryString["taskID"].ToString(); txtTaskID.Text = taskID; } }<tr> <td class="templateLabel"> runat="server" Text="Link:"></asp:Label> <asp:Label ID="lblFileName" ToolTip="File Name of last upload" runat="server" Text="File Name:"></asp:Label> </td> <td class="templateValue"> <telerik:RadTextBox ID="txtURL" MaxLength="300" runat="server" EmptyMessage="Specify a link (must start with http:// or https://)" Width="450px" Enabled='<%# (Boolean)Session["EditProcess"] %>'> </telerik:RadTextBox> <asp:Label ID="lblFileNameValue" Text="File Name goes here" ToolTip="File Name of last upload" runat="server"></asp:Label> </td> </tr><tr> <td class="templateLabel"> <asp:Label ID="lblAttachmentType" runat="server" Text="Reference:"></asp:Label> </td> <td class="templateValue"> <telerik:RadButton runat="server" AutoPostBack="False" Enabled='<%# (Boolean)Session["EditProcess"] %>' ID="optAttachment" ButtonType="ToggleButton" ToggleType="Radio" GroupName="urlOrAtt" Text="File" Value="attachment" OnClientCheckedChanged="optAttachment_CheckedChanged"></telerik:RadButton> <telerik:RadButton runat="server" AutoPostBack="False" Enabled='<%# (Boolean)Session["EditProcess"] %>' ID="optURL" ButtonType="ToggleButton" ToggleType="Radio" GroupName="urlOrAtt" Text="Link" Value="url" OnClientCheckedChanged="optUrL_CheckedChanged"></telerik:RadButton> <telerik:RadButton runat="server" AutoPostBack="False" Enabled='<%# (Boolean)Session["EditProcess"] %>' ID="optNone" ButtonType="ToggleButton" ToggleType="Radio" GroupName="urlOrAtt" Text="None" Value="none" OnClientCheckedChanged="optNone_CheckedChanged"></telerik:RadButton> </td></tr>function optUrL_CheckedChanged(sender, eventArgs) { if (!g_rowSelected) { if (sender.get_checked()) { alert('Link selected'); //var txtURL = $find("<%=txtURL.ClientID%>"); //txtURL.clear(); //txtURL.set_visible(true); document.getElementById('<%= txtURL.ClientID %>').style.display = 'block'; document.getElementById('<%= lblURL.ClientID %>').style.display = 'block'; $find("<%=uplAttachment.ClientID%>").set_visible(false); document.getElementById('<%= lblUpload.ClientID %>').style.display = 'none'; document.getElementById('<%= lblFileName.ClientID %>').style.display = 'none'; document.getElementById('<%= lblFileNameValue.ClientID %>').style.display = 'none'; } EnableSave(); } } function optAttachment_CheckedChanged(sender, eventArgs) { if (!g_rowSelected) { if (sender.get_checked()) { alert('File selected'); var txtURL = $find("<%=txtURL.ClientID%>"); txtURL.clear(); txtURL.set_visible(false); document.getElementById('<%= lblURL.ClientID %>').style.display = 'none'; $find("<%=uplAttachment.ClientID%>").set_visible(true); document.getElementById('<%= lblUpload.ClientID %>').style.display = 'block'; document.getElementById('<%= lblFileName.ClientID %>').style.display = 'block'; document.getElementById('<%= lblFileNameValue.ClientID %>').style.display = 'block'; } EnableSave(); } } function optNone_CheckedChanged(sender, eventArgs) { if (!g_rowSelected) { if (sender.get_checked()) { alert('None selected'); var txtURL = $find("<%=txtURL.ClientID%>"); txtURL.clear(); txtURL.set_visible(false); document.getElementById('<%= lblURL.ClientID %>').style.display = 'none'; $find("<%=uplAttachment.ClientID%>").set_visible(false); document.getElementById('<%= lblUpload.ClientID %>').style.display = 'none'; document.getElementById('<%= lblFileName.ClientID %>').style.display = 'none'; document.getElementById('<%= lblFileNameValue.ClientID %>').style.display = 'none'; } EnableSave(); } }DataTable Kommentare { get { if (Object.Equals(Session["Kommentare"], null)) { string query = "SELECT id, paketid, kommentar, bewertung, produkt FROM [kommentare] INNER JOIN [rating] ON kommentare.paketid = rating.id"; DataTable dt = GetDataTable(query); Session["Kommentare"] = dt; } return (DataTable)Session["Kommentare"]; } set { Session["Kommentare"] = value; } }<telerik:GridBoundColumn AllowSorting="true" DataField="produkt" HeaderText="Produkt" SortExpression="Produkt" UniqueName="produkt" />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.