Hi,
I have a page which displays a master record and contains one or more grids which display child records. The grids use user controls for displaying the data in edit mode.
If a user saves the master record (by clicking a SAVE button) while one of the child grids is still in edit mode, I would like to save the child grids automatically, ie find out if they are in edit or insert mode, retrieve the control values from the usercontrol and call insert/update on the data model (after validation).
If the insert/update is triggered by an event (Button Click), it is handled as follows:
protected void RadGrid1_UpdateCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
{
//Get the GridEditableItem of the RadGrid
GridEditableItem editedItem = e.Item as GridEditableItem;
....
What I would like to to when the master record is saved:
protected void btnSave_Click(.....) //Save event of master record
{
...Save master record...
If (childGrid.IsInEditMode)
{
GridEditableItem editedItem = childGrid.GetCurrentEditableItem(); //How can this be achieved
ChildObject co = GetData(editableItem):
if (editableItem.IsInInsertMode()) //How can this be achieved
{
datamodel.insert(co):
}
else
{
datamodel.update(co);
}
}
}
Any help would be greatly appreciated.
Thanks,
Stefan
editorDirPath =
string
.Format(
"{0}/Temp/1"
, editorBasePath);
System.IO.Directory.CreateDirectory(
this
.MapPath(editorDirPath));
// Setting
ctrlProductPhoto.TreePaneWidth = 0;
ctrlProductPhoto.Upload.ControlObjectsVisibility = ControlObjectsVisibility.None;
ctrlProductPhoto.Upload.MaxFileInputsCount = 1;
// DirPath
targetDirPaths =
new
string
[] {editorDirPath};
ctrlProductPhoto.Configuration.ViewPaths = targetDirPaths;
ctrlProductPhoto.Configuration.UploadPaths = targetDirPaths;
ctrlProductPhoto.Configuration.DeletePaths = targetDirPaths;
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head runat="server"> |
<title></title> |
<telerik:RadStyleSheetManager id="RadStyleSheetManager1" runat="server" /> |
<style type="text/css"> |
html, body, form |
{ |
height: 100%; |
padding: 0px; |
margin: 0px; |
} |
</style> |
</head> |
<body> |
<form id="form1" runat="server"> |
<telerik:RadScriptManager ID="RadScriptManager1" runat="server"> |
<Scripts> |
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" /> |
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" /> |
</Scripts> |
</telerik:RadScriptManager> |
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> |
</telerik:RadAjaxManager> |
<div> |
<telerik:RadSplitter id="RadSplitter1" runat="server" Width="100%" Skin="Vista" LiveResize="true" SplitBarsSize="4px" EnableEmbeddedBaseStylesheet="true" ResizeMode="EndPane"> |
<!-- Left web --> |
<telerik:RadPane id="RadPane_MainLeft" runat="server" width="180" MinWidth="170" MaxWidth="300" Scrolling="None"> |
Menu Left |
</telerik:RadPane> |
<telerik:RadSplitBar id="RadSplitbar1" runat="server" collapsemode="Forward" ></telerik:RadSplitBar> |
<!-- Right web --> |
<telerik:RadPane id="RadPane_MainRight" runat="server" > |
aaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaa<br /> |
aaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
<br /> |
</telerik:RadPane></telerik:RadSplitter> |
</div> |
</form> |
</body> |
</html> |
<telerik:RadXmlHttpPanel ID="RadXmlHttpPanel1" runat="server" OnServiceRequest="XmlHttpPanel_ServiceRequest" RenderMode="Block">
<asp:Button ID="Button1" runat="server" OnClientClick="UpdateGrid();return false;" Text="Button" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
</telerik:RadXmlHttpPanel>
<telerik:RadXmlHttpPanel ID="RadXmlHttpPanel2" runat="server" OnServiceRequest="XmlHttpPanel_ServiceRequest2"
RenderMode="Block">
<telerik:RadGrid ID="RadGrid1" Skin="Hay" OnNeedDataSource="RadGrid1_NeedDataSource"
Width="370px" AllowSorting="True" PageSize="10" AllowPaging="True" runat="server"
AutoGenerateColumns="false" GridLines="None">
<MasterTableView ClientDataKeyNames="Id" Width="100%" >
<Columns>
<telerik:GridBoundColumn DataField="Id" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Name" DataField="Header" UniqueName="Header" >
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Address" DataField="ShortDescription" UniqueName="ShortDescription">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
<PagerStyle Mode="Slider" PageButtonCount="5" />
<ClientSettings EnableRowHoverStyle="true" Selecting-AllowRowSelect="true" ClientEvents-OnRowSelected="rowSelected">
</ClientSettings>
</telerik:RadGrid>
</telerik:RadXmlHttpPanel>
ANd CodeBehind
protected void Page_Load(object sender, EventArgs e)
{
}
protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
RadGrid1.DataSource =
db.dbRead("Select * from Doctors");
}
protected void XmlHttpPanel_ServiceRequest(object sender, RadXmlHttpPanelEventArgs e)
{
string val = e.Value;
DataSet ds = db.dbRead("Select * from Doctors where Id=" + val + "");
TextBox1.Text = ds.Tables[0].Rows[0]["Header"].ToString();
TextBox2.Text = ds.Tables[0].Rows[0]["ShortDescription"].ToString();
TextBox3.Text = val;
}
protected void XmlHttpPanel_ServiceRequest2(object sender, RadXmlHttpPanelEventArgs e)
{
DataSet ds = db.dbRead("Select top 5 * from Doctors");
RadGrid1.DataSource = ds;
RadGrid1.DataBind();
}
<script type="text/javascript">
function OnRowDblClick(sender, args) {
var index = args._itemIndexHierarchical;
__doPostBack(
"<%=GridManage.UniqueID %>", "RowDblClicked:" + index);
}
</script>
<telerik:RadGrid ID="GridManage" runat="server"
AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False"
AllowMultiRowSelection="True"
ShowStatusBar="True" Skin="WebBlue" GridLines="None"
onselectedindexchanged="GridManage_SelectedIndexChanged"
onitemcreated="GridManage_ItemCreated"
onneeddatasource="GridManage_NeedDataSource"
OnPageSizeChanged="GridManage_PageSizeChanged"
GroupingEnabled="False" onitemdatabound="GridManage_ItemDataBound" ><AlternatingItemStyle BackColor="Silver" />
<MasterTableView TableLayout="Fixed" DataKeyNames="ID,VIP" >
<ClientSettings>
<ClientEvents OnRowDblClick="OnRowDblClick"/>
<Selecting AllowRowSelect="true" />
</ClientSettings>