Telerik Forums
UI for ASP.NET AJAX Forum
1 answer
80 views

I am trying to prevent the user from resizing an appointment such that it would overlap with another appointment within the same resource.  The problem seems to be when the end of the appointment being resized is dragged over another that is only 1 day in duration, it's not detecting that appointment as being within the start and end dates.  I'm using the timeline view where each slot is 1 day.

I can set the start time that it passes to the function to one ms less where it spans the day boundary and it works.  If I set it back to 00:00:00 it doesn't.

The code I'm using is below, ResizingTarget() is the handler for the scheduler's OnClientAppointmentResizeEnd event.

function ResizingTarget(sender, args)
{
    if (!isSlotFree(args.get_targetSlot(), args.get_appointment()))
    {
        args.get_appointment().get_element().style.border = "0px none black";
        args.set_cancel(true);
    }
    else
    {
        var apt = args.get_appointment();
        var newTime = args.get_newStartTime();
        var featureId = apt.get_id();
 
 
        // Call web service to update target
    }
}
 
 
 
function isSlotFree(targetSlot, appointment)
{
    //Get start time of target calendar slot
    var startTime = targetSlot.get_startTime();
 
    //Ensure reference to RadScheduler client object
        if (_sched == null)
            _sched = $find( "<%= targets.ClientID %>" );
 
    //Calculate end time (to create span that cannot be overlapped)
    var endTime = new Date(startTime.getTime() + 86400000); //24hr period
    startTime = new Date(startTime.getTime());
 
    //Determine if appt being moved overlaps with another appointment
    return !overlapsWithAnotherAppointment(appointment, startTime, endTime);
}
 
 
function overlapsWithAnotherAppointment(appointment, startTime, endTime)
{
        if (_sched == null)
            _sched = $find( "<%= targets.ClientID %>" );
 
    // Get all appts in range of start and end time
    var appointments = _sched.get_appointments().getAppointmentsInRange(startTime, endTime);
 
    if (appointments.get_count() == 0)
        return false;
 
 
    var strID = "";
    var apptCnt = appointments.get_count();
 
    for (var i = 0; i < apptCnt; i++)
    {
        if (appointments._array[i]._id != appointment._id)
        {
            if (appointments._array[i]._serializedResources[0].key == appointment._resources._array[0]._key)
                return true;
        }
    }
 
    return false;
}
Marbry
Top achievements
Rank 1
 answered on 17 Jan 2013
3 answers
96 views
Hello,

I just downloaded your trial version of the AJAX controls for .NET today.  We have an application that performs uploads of files along with saving associated user entered data for the file that was uploaded.  Previously we were using the SlickUpload control but this product has been sold and isn't supported anymore.

So, I'm looking at converting our application to use your AsyncUpload component.  Some things that I see that are different is that we upload the file on submit of the page along with the information that the user entered.  So, the process is something like: upload file and display upload progress bar when page is submitted and then after file is uploaded, in the same transaction, update the database with the information that the user entered about the file.

I saw that you have a few sample programs that combine some aspects of this but it would involve combining multiple demos to achieve what I'd like.  Usually you upload the file automatically in the client code when the file is selected vs having it uploaded it on submit of the page.  Also I couldn't find a good example of uploading the file and then saving associated database information immediately after the upload takes place.  I would need to write a custom HTTP handler for this?  Do you have some sample code for this?

Thanks for your help in pointing me in the right direction.

Mike Nelson
Plamen
Telerik team
 answered on 17 Jan 2013
2 answers
463 views
Hi,

I have a radgrid which is getting populated with data from a datasource. However when the radgrid is populated with data from many columns, user is unable to scroll to the right and the horizontal scroll bar is also missing. I have attached my aspx code for your reference. what do i need to do to get the horizontal scroll bar to scroll results to the right.

Thanks,
Swamy 

<telerik:RadFormDecorator ID="QsfFromDecorator" runat="server" DecoratedControls="All" EnableRoundedCorners="false" />
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="RadGrid1">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1">
                </telerik:AjaxUpdatedControl>
            </UpdatedControls>
        </telerik:AjaxSetting>
        <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="RadGrid2" LoadingPanelID="RadAjaxLoadingPanel2">
                </telerik:AjaxUpdatedControl>
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
</telerik:RadAjaxLoadingPanel>
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
    <script type="text/javascript">
        <!--
 
        //this method calculates whether you have reached the bottom when dragging the vertical grid scroll
        function IsScrolledToBottom(scrollArea) {
            var currentPosition = scrollArea.scrollTop + scrollArea.clientHeight;
            return currentPosition == scrollArea.scrollHeight;
        }
        -->
    </script>
</telerik:RadCodeBlock>
 
<telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="True" PageSize="14"
    AllowSorting="True" AllowCustomPaging="True" VirtualItemCount="50000" OnColumnCreated="RadGrid1_ColumnCreated"
    OnNeedDataSource="RadGrid1_NeedDataSource" CellSpacing="0"
    GridLines="None" Skin="Web20">
    <PagerStyle Mode="NumericPages"></PagerStyle>
    <MasterTableView TableLayout="Fixed">
    </MasterTableView>
    <ClientSettings>
        <Scrolling AllowScroll="True" EnableVirtualScrollPaging="True" UseStaticHeaders="True"
            SaveScrollPosition="True"></Scrolling>
    </ClientSettings>
</telerik:RadGrid>
Mahadevan
Top achievements
Rank 1
 answered on 17 Jan 2013
1 answer
216 views
I am using a RadGrid with a UserControl as my EditForm. I am doing some complicated custom validation when the ItemCommand is called on Update (e.CommandName = "Update") when a btn is clicked in the UserControl. I cannot use regular validation via one of the standard .net validation controls. My problem is that when my custom validation process is complete after the btn is clicked, I do not know how to keep the RadGrid in Edit mode with the UserControl / EditForm still exposed. I want to essentially keep the UserControl with the user's initial edits open with instructions for the custom validation, while being able to postback to do server validation.

How do I return to Edit mode within the ItemCommand event for CommandName == "Update"?
Eyup
Telerik team
 answered on 17 Jan 2013
1 answer
37 views
I have an ASP .NET 2.0 application using standard asp controls. My project is to replace the asp controls with Telerik controls. We have versions from 2007 to 2012, which version would be the best to use for the update project?

Thanks,

Steve Holdorf
lovehans@nc.rr.com
holdorfs.ctr@jdi.socom.mil
Rumen
Telerik team
 answered on 17 Jan 2013
4 answers
220 views
So far as I know I've been following your documentation to the letter.  (http://www.telerik.com/help/aspnet-ajax/editor-default-font-for-editable-content.html  etc...)

I have a RadEditor with the necessary EditContentArea.css.

In the css I have:
body {
     background-color: white;      
    font-family: Arial !important; 
    font-size: 10pt !important;
}

But no matter what I do, the editor always comes up in Times-Roman 16pt.

What could I be missing?
Rumen
Telerik team
 answered on 17 Jan 2013
3 answers
241 views
I have a RadGrid that has several columns.  (18 to be precise) though only 6 of these columns display by default. The rest are set to 'display=false'.   I'm trying to make it show that when a user changes what columns are displayed that change is persisted through their experience using sessions so that if they navigate away and come back to the page it will retain the changes they made.

I am following the instructions provided:  http://demos.telerik.com/aspnet-ajax/grid/examples/programming/savinggridsettingsonperuserbasis/defaultcs.aspx on the demo however I am having issues with modifying this so that it calls my SaveSettings method.

Is there a way to have it so that when the user hides or shows a column that it calls the SaveSettings method?
ASPX
<telerik:RadGrid ID="gvDash" runat="server" GridLines="None" AutoGenerateColumns="false"
            DataSourceID="dsDashboard" PageSize="15" Width="100%" ShowStatusBar="true"
            AllowPaging="true" AllowSorting="true">
            <MasterTableView DataKeyNames="FileID" CommandItemDisplay="Top" AllowMultiColumnSorting="true" EnableHeaderContextMenu="true" EditMode="PopUp">
                <CommandItemSettings ShowAddNewRecordButton="false" ShowExportToWordButton="true" ShowExportToExcelButton="true" />
                <NoRecordsTemplate>
                    <em>No Records</em>
                </NoRecordsTemplate>
                <AlternatingItemStyle CssClass="alt-row" />
                <Columns>
                    <telerik:GridTemplateColumn UniqueName="Options" Groupable="false" AllowFiltering="false" HeaderText="Options">
                        <ItemTemplate>
                            <asp:HyperLink  ID="EditLink" runat="server" Text="Edit"></asp:HyperLink>
                            <asp:LinkButton ID="btnView" runat="server" Text="View" />
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
                    <telerik:GridBoundColumn UniqueName="FileNo" DataField="FileNo" HeaderText="File Number" SortExpression="FileNo" Groupable="false" />
                    <telerik:GridBoundColumn UniqueName="DisplayName" DataField="DisplayName" HeaderText="Vessel" SortExpression="DisplayName" />
                    <telerik:GridBoundColumn UniqueName="VesselStatusName" DataField="VesselStatusName" HeaderText="Status" SortExpression="VesselStatusName" />
                    <telerik:GridBoundColumn UniqueName="OfficeName" DataField="OfficeName" HeaderText="Office Location" SortExpression="OfficeName" />
                    <telerik:GridCheckBoxColumn UniqueName="AddedToQB" DataField="AddedToQB" HeaderText="Vsl Added QB" SortExpression="AddedToQB" />
                    <telerik:GridBoundColumn UniqueName="VesselSailed" DataField="VesselSailed" HeaderText="Sail Date" SortExpression="VesselSailed" DataFormatString="{0:M/d/yyyy HH:mm}" />
                    <telerik:GridCheckBoxColumn UniqueName="SailDateQB" DataField="SailDateQB" HeaderText="Sail Date Added QB" SortExpression="SailDateQB" />
                    <telerik:GridBoundColumn UniqueName="CargoName" DataField="CargoName" HeaderText="Cargo" SortExpression="CargoName" />
                    <telerik:GridTemplateColumn UniqueName="PayingPrinci" HeaderText="Paying Principal" GroupByExpression="PayingPrinciName Group By PayingPrinciName" SortExpression="PayingPrinciName">
                        <ItemTemplate>
                            <asp:Label ID="lblPayingPrinci" runat="server" Text='<%# Bind("PayingPrinciName") %>'></asp:Label>
                            <br /><asp:Label ID="lblPayingPrinciAddress" CssClass="label-note" runat="server" Text='<%# Bind("PayingPrinciAddress") %>'></asp:Label>
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
                    <telerik:GridBoundColumn UniqueName="PDAAmnt" DataField="PDAAmnt" HeaderText="PDA AMT" SortExpression="PDAAmnt" DataFormatString="{0:c}" />
                    <telerik:GridBoundColumn UniqueName="RECVDAmnt" DataField="RECVDAmnt" HeaderText="PDA AMT Rcvd" SortExpression="RECVDAmnt" DataFormatString="{0:c}" />
                    <telerik:GridBoundColumn UniqueName="PerformaDateRcvd" DataField="PerformaDateRcvd" HeaderText="PDA Date Rcvd" SortExpression="PerformaDateRcvd" DataFormatString="{0:M/d/yyyy}" />
                    <telerik:GridBoundColumn UniqueName="CTMAmnt" Display="false" DataField="CTMAmnt" HeaderText="CTM AMT" SortExpression="CTMAmnt" DataFormatString="{0:c}" />
                    <telerik:GridBoundColumn UniqueName="CTMAmntRcvd" Display="false" DataField="CTMAmntRcvd" HeaderText="CTM AMT Rcvd" SortExpression="RECVDAmnt" DataFormatString="{0:c}" />
                    <telerik:GridBoundColumn UniqueName="CTMAmntDate" Display="false" DataField="CTMAmntDate" HeaderText="CTM Date Rcvd" SortExpression="PerformaDateRcvd" DataFormatString="{0:M/d/yyyy}" />
                    <telerik:GridBoundColumn UniqueName="PortName" DataField="PortName" HeaderText="Port" SortExpression="PortName" />
                    <telerik:GridBoundColumn UniqueName="AccountingNotes" Display="false" DataField="AccountingNotes" HeaderText="Comments" />
                </Columns>
                </MasterTableView>
            <ClientSettings AllowColumnsReorder="true" AllowColumnHide="true">
                <Resizing AllowColumnResize="true" AllowResizeToFit="true" />
            </ClientSettings>
        </telerik:RadGrid>

Code Behind
Private Sub LoadSettings()
        If Not IsNothing(Session("Acc.Funds.GridSettings")) Then
            Dim LoadPersister As New GridSettingsPersister(gvDash)
            Dim settings As String = DirectCast(Session("Acc.Funds.GridSettings"), String)
            LoadPersister.LoadSettings(settings)
        End If
End Sub   
Private Sub SaveSettings()
        Dim SavePersister As New GridSettingsPersister(gvDash)
        Session("Acc.Funds.GridSettings") = SavePersister.SaveSettings()
    End Sub
Kostadin
Telerik team
 answered on 17 Jan 2013
1 answer
92 views
How  can i show the height of dropdown based on the number of items in the radcombobox? 
Princy
Top achievements
Rank 2
 answered on 17 Jan 2013
3 answers
153 views

I have a hierarchy radgrid that contains "Case Number" parent objects and "Offense" child objects and supports Insert/Update/Delete functionality.

 

I am getting the following error:

 

DataBinding: 'Telerik.Web.UI.GridInsertionObject' does not contain a property with the name 'AgencyID'.

 

To get this error I am performing the following actions:

 

  1. Click the "Add New Case Number" button (the Case Number form template is displayed)
  2. Fill in the required Case Number fields and click the insert button (upon doing this the "Add New Offense" button is displayed under the Case Number just inserted into the grid)
  3. Click the "Add New Offense" button (the Offense form template is displayed)
  4. Click the expand/collapse button next to the Case Number to collapse the Offense form template
  5. Click the expand/collapse button next to the Case Number to expand the Offense form template

The error occurs at this point!

My question is how do I go about fixing this problem?

My grid definition is as follows:

<telerik:RadGrid ID="radGridCaseNumbers" AutoGenerateColumns="false" AllowMultiRowEdit="false" Visible="false" runat="server"
    OnInsertCommand="radGridCaseNumbers_InsertCommand" OnUpdateCommand="radGridCaseNumbers_UpdateCommand"
    OnDeleteCommand="radGridCaseNumbers_DeleteCommand" OnNeedDataSource="radGridCaseNumbers_NeedDataSource"
    OnDetailTableDataBind="radGridCaseNumbers_DetailTableDataBind" OnItemCommand="radGridCaseNumbers_ItemCommand">
    <MasterTableView CommandItemDisplay="Top" DataKeyNames="CaseNumberID" TableLayout="Auto" Name="CaseNumbers" HierarchyDefaultExpanded="true" NoMasterRecordsText="No Case Number records to display">
        <DetailTables>
            <telerik:GridTableView DataKeyNames="OffenseID" runat="server" CommandItemDisplay="Top" TableLayout="Auto" Name="Offenses" NoDetailRecordsText="No Offense records to display">
                <ParentTableRelation>
                    <telerik:GridRelationFields DetailKeyField="CaseNumberID" MasterKeyField="CaseNumberID" />
                </ParentTableRelation>
                <CommandItemTemplate>
                    <div>
                        <telerik:RadButton ID="radButtonAddOffense" runat="server" Text="Add New Offense"
                            CommandName="InitInsert" Visible='<%# !radGridCaseNumbers.MasterTableView.IsItemInserted %>'
                            ButtonType="StandardButton">
                        </telerik:RadButton>
                    </div>
                </CommandItemTemplate>
                <Columns>
                    <telerik:GridDropDownColumn HeaderText="Arresting PD" EnableEmptyListItem="true"
                        DataField="AgencyID" ListTextField="Name" ListValueField="ID" DataSourceID="objectDataSourceAgencies">
                    </telerik:GridDropDownColumn>
                    <telerik:GridEditCommandColumn ButtonType="PushButton" UniqueName="EditOffenseCommandColumn" />
                    <telerik:GridButtonColumn UniqueName="DeleteOffenseColumn" ButtonType="PushButton"
                        Text="Delete" CommandName="Delete" />
                </Columns>
                <EditFormSettings EditFormType="Template">
                    <FormTemplate>
                        <div>
                            <table cellpadding="0" cellspacing="0" class="tableContentControls">
                                <tr>
                                    <td class="tableCellRequiredField"><asp:Label Text="*" runat="server" CssClass="labelRequiredField" /></td>
                                    <td class="tableCellLabel"><asp:Label Text="Arresting PD:" runat="server" CssClass="labelDescription" /></td>
                                    <td class="tableCellControl">
                                        <telerik:RadComboBox ID="radComboBoxAgency" AutoPostBack="true" EmptyMessage="(Select an Arresting PD)" EnableLoadOnDemand="true"
                                            DataSourceID="objectDataSourceAgencies" DataTextField="Name" DataValueField="ID" SelectedValue='<%# Bind("AgencyID") %>'
                                            Filter="StartsWith" runat="server" OnSelectedIndexChanged="radComboBoxAgency_SelectedIndexChanged">
                                        </telerik:RadComboBox>
                                    </td>
                                    <td class="tableCellValidation">
                                        <asp:RequiredFieldValidator ID="requiredFieldValidatorAgency" ControlToValidate="radComboBoxAgency" runat="server" ValidationGroup="validationGroup_Details_OffensesGrid">
                                            <table>
                                                <tr>
                                                    <td><asp:Image runat="server" ImageUrl="~/Images/ValidationError.png" /></td>
                                                    <td><asp:Label runat="server" Text="Arresting PD is required" CssClass="labelValidationError" /></td>
                                                </tr>
                                            </table>              
                                        </asp:RequiredFieldValidator>
                                    </td>
                                </tr>
                                <tr>
                                    <td colspan="4">
                                        <telerik:RadButton ID="radButtonInsertUpdateOffense" CausesValidation="true" CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'
                                            Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>' ValidationGroup="validationGroup_Details_OffensesGrid"
                                            runat="server" OnClientClicking="performInsertOrUpdateOffense">
                                        </telerik:RadButton>
                                        <telerik:RadButton ID="radButtonCancelInsertUpdateOffense" CausesValidation="false" CommandName="Cancel" Text="Cancel" runat="server" />                                                     
                                    </td>
                                </tr>
                            </table>
                        </div>
                    </FormTemplate>
                </EditFormSettings>
            </telerik:GridTableView>
        </DetailTables>
        <CommandItemTemplate>
            <div>
                <telerik:RadButton ID="radButtonAddCaseNumber" runat="server" Text="Add New Case Number"
                    CommandName="InitInsert" Visible='<%# !radGridCaseNumbers.MasterTableView.IsItemInserted %>'
                    ButtonType="StandardButton">
                </telerik:RadButton>
            </div>
        </CommandItemTemplate>
        <Columns>
            <telerik:GridBoundColumn HeaderText="Number" DataField="Number" HeaderStyle-Width="20" />
            <telerik:GridDropDownColumn HeaderText="Type" EnableEmptyListItem="true" DataField="TypeID"
                ListTextField="Description" ListValueField="ID" DataSourceID="objectDataSourceCaseNumberTypes"
                HeaderStyle-Width="20" />
            <telerik:GridEditCommandColumn ButtonType="PushButton" UniqueName="EditCaseNumberCommandColumn"
                HeaderStyle-Width="10" />
            <telerik:GridButtonColumn UniqueName="DeleteCaseNumberColumn" ButtonType="PushButton"
                Text="Delete" CommandName="Delete" HeaderStyle-Width="200" />
        </Columns>
        <EditFormSettings EditFormType="Template">
            <FormTemplate>
                <div>
                    <table>
                        <tr>
                            <td class="tableCellRequiredField"><asp:Label Text="*" runat="server" CssClass="labelRequiredField" /></td>
                            <td class="tableCellLabel"><asp:Label Text="Number:" runat="server" CssClass="labelDescription" /></td>
                            <td class="tableCellControl"><telerik:RadTextBox ID="radTextBoxNumber" Text='<%# Bind("Number") %>' runat="server" /></td>
                            <td class="tableCellValidation">
                                <asp:RequiredFieldValidator ID="requiredFieldValidatorNumber" ControlToValidate="radTextBoxNumber" runat="server" ValidationGroup="validationGroup_Details_CaseNumbersGrid">
                                    <table>
                                        <tr>
                                            <td><asp:Image runat="server" ImageUrl="~/Images/ValidationError.png" /></td>
                                            <td><asp:Label runat="server" Text="Number is required" CssClass="labelValidationError" /></td>
                                        </tr>
                                    </table>              
                                </asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td class="tableCellRequiredField"><asp:Label Text="*" runat="server" CssClass="labelRequiredField" /></td>
                            <td class="tableCellLabel"><asp:Label Text="Type:" runat="server" CssClass="labelDescription" /></td>
                            <td class="tableCellControl">
                                <telerik:RadComboBox ID="radComboBoxType" DataSourceID="objectDataSourceCaseNumberTypes" DataTextField="Description" DataValueField="ID"
                                    EmptyMessage="(Select a Type)" EnableLoadOnDemand="true" Filter="StartsWith" SelectedValue='<%# Bind("TypeID") %>' runat="server">
                                </telerik:RadComboBox>
                            </td>
                            <td class="tableCellValidation">
                                <asp:RequiredFieldValidator ID="requiredFieldValidatorType" ControlToValidate="radComboboxType" runat="server" ValidationGroup="validationGroup_Details_CaseNumbersGrid">
                                    <table>
                                        <tr>
                                            <td><asp:Image runat="server" ImageUrl="~/Images/ValidationError.png" /></td>
                                            <td><asp:Label runat="server" Text="Type is required" CssClass="labelValidationError" /></td>
                                        </tr>
                                    </table>              
                                </asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="4">
                                <telerik:RadButton ID="radButtonInsertUpdateCaseNumber" CausesValidation="true" CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'
                                    Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>' ValidationGroup="validationGroup_Details_CaseNumbersGrid"
                                    runat="server" OnClientClicking="performInsertOrUpdateCaseNumber">
                                </telerik:RadButton>
                                <telerik:RadButton ID="radButtonCancelInsertUpdateCaseNumber" CausesValidation="false" CommandName="Cancel" Text="Cancel" runat="server" />                                                   
                            </td>
                        </tr>
                    </table>
                </div>
            </FormTemplate>
        </EditFormSettings>
    </MasterTableView>
    <ValidationSettings CommandsToValidate="PerformInsert,Update" />
</telerik:RadGrid>

The code-behind for the grid is as follows:

    public DataSet CaseNumbers
    {
        get
        {
            object obj = ViewState["CaseNumbers"];
 
            if (obj != null)
                return (DataSet)obj;
 
            DataSet caseNumbers = new DataSet();
            ReferralDb referralDb = new ReferralDb();
            caseNumbers = referralDb.GetReferralCaseNumbers(Convert.ToInt32(hiddenFieldReferralID.Value));
 
            ViewState["CaseNumbers"] = caseNumbers;
 
            return caseNumbers;
        }
    }
 
    public DataSet Offenses
    {
        get
        {
            object obj = ViewState["Offenses"];
 
            if (obj != null)
                return (DataSet)obj;
 
            DataSet offenses = new DataSet();
            ReferralDb referralDb = new ReferralDb();
            offenses = referralDb.GetReferralOffenses(Convert.ToInt32(hiddenFieldReferralID.Value));
 
            ViewState["Offenses"] = offenses;
 
            return offenses;
        }
    }
 
protected void radGridCaseNumbers_DeleteCommand(object sender, GridCommandEventArgs e)
    {
        string id = null;
        DataTable dataTableOffenses = null;
        DataTable dataTableCaseNumbers = null;
 
        if ("Offenses".Equals(e.Item.OwnerTableView.Name))
        {
            id = ((GridDataItem)e.Item).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["OffenseID"].ToString();
 
            dataTableOffenses = Offenses.Tables["Offense"];
 
            if (dataTableOffenses.Rows.Find(id) != null)
                dataTableOffenses.Rows.Find(id).Delete();
        }
 
        else if ("CaseNumbers".Equals(e.Item.OwnerTableView.Name))
        {
            id = ((GridDataItem)e.Item).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["CaseNumberID"].ToString();
 
            dataTableCaseNumbers = CaseNumbers.Tables["CaseNumber"];
 
            if (dataTableCaseNumbers.Rows.Find(id) != null)
                dataTableCaseNumbers.Rows.Find(id).Delete();
 
            dataTableOffenses = Offenses.Tables["Offense"];
 
            DataRow[] offenses = Offenses.Tables["Offense"].Select("CaseNumberID = " + id);
 
            foreach (DataRow dataRow in offenses)
            {
                id = dataRow["OffenseID"].ToString();
                dataTableOffenses.Rows.Find(id).Delete();
            }
        }
    }
 
 
    protected void radGridCaseNumbers_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
    {
        GridDataItem gridDataItem = (GridDataItem)e.DetailTableView.ParentItem;
        int caseNumberID = (int)gridDataItem.GetDataKeyValue("CaseNumberID");
        e.DetailTableView.DataSource = Offenses.Tables["Offense"].Select("CaseNumberID = " + caseNumberID.ToString());
        Offenses.Tables["Offense"].PrimaryKey = new DataColumn[] { Offenses.Tables["Offense"].Columns["OffenseID"] };
    }
 
    protected void radGridCaseNumbers_InsertCommand(object sender, GridCommandEventArgs e)
    {
        GridEditableItem gridEditableItem = null;
        DataTable dataTable = null;
        DataRow dataRowNew = null;
        DataRow[] allValues = null;
        Hashtable newValues = null;
 
        if ("Offenses".Equals(e.Item.OwnerTableView.Name))
        {
            gridEditableItem = (GridEditableItem)e.Item;
            dataTable = Offenses.Tables["Offense"];
            dataRowNew = dataTable.NewRow();
 
            allValues = dataTable.Select("", "OffenseID", DataViewRowState.CurrentRows);
 
            if (allValues.Length > 0)
                dataRowNew["OffenseID"] = (int)allValues[allValues.Length - 1]["OffenseID"] + 1;
            else
                dataRowNew["OffenseID"] = 1; //table empty
 
            newValues = new Hashtable();
            e.Item.OwnerTableView.ExtractValuesFromItem(newValues, gridEditableItem);
 
            try
            {
                foreach (DictionaryEntry entry in newValues)
                    dataRowNew[(string)entry.Key] = entry.Value;
 
                GridDataItem parentItem = (GridDataItem)e.Item.OwnerTableView.ParentItem;
                dataRowNew["CaseNumberID"] = parentItem.OwnerTableView.DataKeyValues[parentItem.ItemIndex]["CaseNumberID"].ToString();
            }
 
            catch
            {
                e.Canceled = true;
            }
 
            dataTable.Rows.Add(dataRowNew);
        }
 
        else if ("CaseNumbers".Equals(e.Item.OwnerTableView.Name))
        {
            gridEditableItem = (GridEditableItem)e.Item;
            dataTable = CaseNumbers.Tables["CaseNumber"];
            dataRowNew = dataTable.NewRow();
 
            allValues = dataTable.Select("", "CaseNumberID", DataViewRowState.CurrentRows);
 
            if (allValues.Length > 0)
                dataRowNew["CaseNumberID"] = (int)allValues[allValues.Length - 1]["CaseNumberID"] + 1;
            else
                dataRowNew["CaseNumberID"] = 1; //table empty
 
            newValues = new Hashtable();
            e.Item.OwnerTableView.ExtractValuesFromItem(newValues, gridEditableItem);
 
            try
            {
                foreach (DictionaryEntry entry in newValues)
                    dataRowNew[(string)entry.Key] = entry.Value;
            }
 
            catch
            {
                e.Canceled = true;
            }
 
            dataTable.Rows.Add(dataRowNew);
        }
    }
 
    protected void radGridCaseNumbers_ItemCommand(object sender, GridCommandEventArgs e)
    {
        if (e.CommandName.Equals(RadGrid.EditCommandName))
            radGridCaseNumbers.MasterTableView.IsItemInserted = false;
 
        if (e.CommandName.Equals(RadGrid.InitInsertCommandName))
            radGridCaseNumbers.MasterTableView.ClearEditItems();
 
        if ((e.CommandName.Equals(RadGrid.InitInsertCommandName)) && ("Offenses".Equals(e.Item.OwnerTableView.Name)))
        {
            if (e.Item.OwnerTableView.Items.Count.Equals(0))
            {
                e.Canceled = true;
                System.Collections.Specialized.ListDictionary newVal = new System.Collections.Specialized.ListDictionary();
                newVal["AgencyID"] = null;
                e.Item.OwnerTableView.InsertItem(newVal);
            }
        }
    }
 
    protected void radGridCaseNumbers_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        ((RadGrid)sender).DataSource = CaseNumbers;
        CaseNumbers.Tables["CaseNumber"].PrimaryKey = new DataColumn[] { CaseNumbers.Tables["CaseNumber"].Columns["CaseNumberID"] };
    }
 
    protected void radGridCaseNumbers_UpdateCommand(object sender, GridCommandEventArgs e)
    {
        GridEditableItem gridEditableItem = null;
        DataTable dataTable = null;
        DataRow[] changedRows = null;
        Hashtable newValues = null;
        DataRow dataRowChanged = null;
 
        if ("Offenses".Equals(e.Item.OwnerTableView.Name))
        {
            gridEditableItem = (GridEditableItem)e.Item;
            dataTable = Offenses.Tables["Offense"];
            changedRows = dataTable.Select("OffenseID = " + gridEditableItem.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["OffenseID"]);
            newValues = new Hashtable();
            e.Item.OwnerTableView.ExtractValuesFromItem(newValues, gridEditableItem);
            dataRowChanged = changedRows[0];
            dataRowChanged.BeginEdit();
 
            try
            {
                foreach (DictionaryEntry entry in newValues)
                    dataRowChanged[(string)entry.Key] = entry.Value;
 
                dataRowChanged.EndEdit();
            }
 
            catch
            {
                dataRowChanged.CancelEdit();
                e.Canceled = true;
            }
        }
 
        else if ("CaseNumbers".Equals(e.Item.OwnerTableView.Name))
        {
            gridEditableItem = (GridEditableItem)e.Item;
            dataTable = CaseNumbers.Tables["CaseNumber"];
            changedRows = dataTable.Select("CaseNumberID = " + gridEditableItem.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["CaseNumberID"]);
            newValues = new Hashtable();
            e.Item.OwnerTableView.ExtractValuesFromItem(newValues, gridEditableItem);
            dataRowChanged = changedRows[0];
            dataRowChanged.BeginEdit();
 
            try
            {
                foreach (DictionaryEntry entry in newValues)
                    dataRowChanged[(string)entry.Key] = entry.Value;
 
                dataRowChanged.EndEdit();
            }
 
            catch
            {
                dataRowChanged.CancelEdit();
                e.Canceled = true;
            }
        }
    }

I am already supressing a similar binding error in the ItemCommand event handler in the case where an insert is initiated into the "Offenses" detail table that is empty.

I was trying to do something similar in the case of an ExpandCollapse command but had no luck.

Antonio Stoilkov
Telerik team
 answered on 17 Jan 2013
21 answers
558 views

I'm trying to use a raddatepicker in a radgrid where the user can only select the Month and Year, rather than the date from the RadCalendar.  


I have implemented this once before using the javascript from the Code Library at the link below and it has worked fine.


Now I am trying to apply it to a raddatepicker that is inside of an EditForm and it will not work.  

I can pass in the RadDatePicker's client ID and when I debug I see that it finds the object, but it continually tells me that the object does not contain those methods or properties.  

The applicable code is below.  Please let me know if you can help me or if you need any further information.

<script type="text/javascript">  
        //override the onload event handler to change the picker after the page is loaded  
        window.onload = function ()  
        {  
            window.setTimeout(function() {SetCalendarTable();},200)  
        }  
              
        function SetCalendarTable()    
        {     
            var picker = "ctl00_RadPanel_ForecastGrid_ctl00_ctl02_ctl02_rdpForecastStartDate";      
            var calendar = picker.get_calendar();  
            var fastNavigation = calendar._getFastNavigation();    
 
            $clearHandlers(picker.get_popupButton());  
            $addHandler(picker.get_popupButton(), "click", function()  
            {     
                //debugger;      
                var textbox = picker.get_textBox();  
                //adjust where to show the popup table   
                var x, y;  
                var adjustElement = textbox;  
                if (textbox.style.display == "none")  
                    adjustElement = picker.get_popupImage();  
              
                var pos = picker.getElementPosition(adjustElement);  
                x = pos.x;  
                y = pos.y + adjustElement.offsetHeight;  
                  
                var e = {  
                              clientX : x,  
                              clientY : y  
                          };  
                //synchronize the input date if set with the picker one  
                var date = picker.get_selectedDate();  
                if(date)  
                {  
                    calendar.FocusedDate[0] = date.getFullYear();  
                    calendar.FocusedDate[1] = date.getMonth() + 1;  
                }                          
 
                $get(calendar._titleID).onclick(e);           
            });  
                  
            fastNavigation.OnOK =   
            function()  
            {                          
                var date = new Date(fastNavigation.Year, fastNavigation.Month, 1);  
                picker.get_dateInput().SetDate(date);  
                fastNavigation.Popup.Hide();     
                                                               
            }  
              
            fastNavigation.OnToday =   
            function()  
            {  
                var date = new Date();  
                picker.get_dateInput().SetDate(date);  
                fastNavigation.Popup.Hide();  
            }  
        }     
    </script> 
 
<telerik:RadGrid ID="ForecastGrid"   
        AllowPaging="True"   
        AllowSorting="True"   
        EnableEmbeddedSkins="false" 
        GridLines="None"   
        OnInsertCommand="ForecastGrid_InsertCommand"   
        OnItemCommand="ForecastGrid_ItemCommand" 
        OnItemCreated="ForecastGrid_ItemCreated"   
        OnItemDataBound="ForecastGrid_ItemDataBound"   
        OnNeedDataSource="ForecastGrid_NeedDataSource" 
        OnUpdateCommand="ForecastGrid_UpdateCommand" 
        PageSize="15" 
        runat="server" 
        ShowFooter = "true" 
        Skin="AO" 
        Visible = "true">  
          
        <MasterTableView CommandItemDisplay="Bottom" AutoGenerateColumns = "false" DataKeyNames="ForecastId">  
 
<EditFormSettings EditFormType = "Template">  
                <FormTemplate> 
                    <div style="padding: 10px;">  
                        <div class="text">  
                            Click the <b>Save</b> button to save your changes.</div> 
                        <div> 
                            <asp:Label Visible="false" ID="ErrorLabel" runat="server" /></div>  
                        <div style="clear: both;">  
                        </div> 
                        <div class="validation-summary">  
                            <asp:ValidationSummary HeaderText="Changes not saved." DisplayMode="SingleParagraph" 
                                ID="ValidationSummary1" runat="server"></asp:ValidationSummary> 
                        </div> 
                        <div style="clear: both;">  
                        </div> 
                          
                        <div> 
                            <asp:Label ID="ForecastIdLabel" Visible="false" runat="server" Text='<%# Bind("ForecastId") %>'></asp:Label></div>  
                        <div> 
                  
                        <div> 
                            <asp:Label ID="IsActiveLabel" Visible="false" runat="server" Text='<%# Bind("IsActive") %>'></asp:Label> 
                        </div> 
                          
                        <div class="label-short" style="float: left; padding-bottom: 5px; width:150px;">  
                            Forecast Name:</div> 
                        <div style="padding-bottom: 5px;">  
                            <Telerik:RadTextBox ID="ForecastName" runat="server" Skin="AO" EnableEmbeddedSkins="false" 
                                Text='<%# Bind("ForecastName") %>' Width="240" MaxLength="50">  
                            </Telerik:RadTextBox> 
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="ForecastName" 
                                ErrorMessage="Forecast Name is required.">*</asp:RequiredFieldValidator> 
                        </div> 
                        <div style="clear: both;">  
                        </div> 
                          
                        <div class="label-short" style="float: left; padding-bottom: 5px; width:150px;">  
                            Forecast Start Date:</div> 
                        <div style="padding-bottom: 5px;">  
                            <telerik:RadDatePicker ID="rdpForecastStartDate" DateInput-DateFormat="MMMM, yyyy" runat="server" 
                                AutoPostBack="false" ToolTip="Month" Width="130px" CssClass="date-picker" Skin="AO" 
                                EnableEmbeddedSkins="false">  
                            </telerik:RadDatePicker> 
                            <%--<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="rdpForecastStartDate" 
                                ErrorMessage="Forecast Start Date is required.">*</asp:RequiredFieldValidator>--%> 
                        </div> 
                        <div style="clear: both;">  
                        </div> 
                          
                        <div class="label-short" style="float: left; padding-bottom: 5px; width:150px;">  
                            Forecast Length:</div> 
                        <div style="padding-bottom: 5px;">  
                            <telerik:RadComboBox ID="rcbForecastLength" runat="server" ZIndex="7020" Skin="AO" EnableEmbeddedSkins="false" Width="243">  
                            </telerik:RadComboBox> 
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="rcbForecastLength" 
                                ErrorMessage="Forecast Length is required.">*</asp:RequiredFieldValidator> 
                        </div> 
                        <div style="clear: both;">  
                        </div> 
                          
                        <div class="label-short" style="float: left; padding-bottom: 5px; width:150px;">  
                            Is Active:</div> 
                        <div style="float: left; padding-bottom: 5px;">  
                            <asp:CheckBox ID="IsActiveCheckbox" runat="server"></asp:CheckBox> 
                        </div> 
                        <div style="clear: both;">  
                        </div> 
 
                        <div> 
                            <asp:Button ID="UpdateButton" CssClass="button" runat="server" Text="Save" CommandName="Update" /> 
                            <asp:Button ID="InsertButton" CssClass="button" runat="server" Text="Save" CommandName="PerformInsert" /> 
                            <asp:Button ID="CancelButton" CssClass="button" runat="server" Text="Cancel" CommandName="Cancel" 
                                CausesValidation="false" /> 
                        </div> 
                    </div> 
                </FormTemplate> 
            </EditFormSettings> 
        </MasterTableView> 
    </telerik:RadGrid> 

Maria Ilieva
Telerik team
 answered on 17 Jan 2013
Narrow your results
Selected tags
Tags
+? more
Top users last month
Jay
Top achievements
Rank 3
Bronze
Iron
Iron
yw
Top achievements
Rank 2
Iron
Iron
Stefan
Top achievements
Rank 2
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Bohdan
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Jay
Top achievements
Rank 3
Bronze
Iron
Iron
yw
Top achievements
Rank 2
Iron
Iron
Stefan
Top achievements
Rank 2
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Bohdan
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?