Link to home
Start Free TrialLog in
Avatar of Kristen Jones
Kristen JonesFlag for United States of America

asked on

Date Variable not saving in post backs

I have a Telerik RadGrid that has two columns that you select a from and to date (DATEISSUED and a EXPIREDATE. There are two controls one each column that allow the user to select a From and a To date.  IT works perfect, however after the user selects a date the postback loses the selected value, although the expression is saved and the results are queried as they should. BUt if I change the From date it does a post back so when I then select a To date the "From" date changes back to my default.  IT seems I am using the ViewState and or  Context.Items wrong in the constructor or something.  Because when I check for the Value as being NULL it is ALWAYS NULL so it is not saving the selected value.

Here is the ASPX code:

<%@ Page Title="" Language="C#" MasterPageFile="~/MASTER-MAIN.Master" AutoEventWireup="true" CodeBehind="MCDPermitView.aspx.cs" Inherits="MCD_INTRANET.MCDPermitView" %>

<%@ Register Assembly="Telerik.ReportViewer.WebForms, Version=6.2.12.1017, Culture=neutral, PublicKeyToken=a9d7983dfcc261be" Namespace="Telerik.ReportViewer.WebForms" TagPrefix="telerik" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <style type="text/css">
        .auto-style9
        {
            font-size: large;
        }
    </style>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

    <span class="auto-style9"><strong>MCD Permit Search and Report Tool</strong></span><br />
    <br />

    To use this tool, use the filter and sort options under the column headers below. To sort a column just click on the column header(s). Click on the small triangle to expand the report details.
    <br />
    If you want to view, print or download the report, click the "Update report query" button and then scroll down to see the report.<br />
    <br />
    <asp:Button ID="Button1" runat="server" Text="Update report query" PostBackUrl="~/Permits/MCDPermitView.aspx" />

    <asp:Button ID="Button2" runat="server" Text="Load Report" PostBackUrl="~/Permits/MCDPermitView.aspx" OnClick="Button2_Click" />
    <br />
    <asp:Label ID="MESSAGElbl" runat="server" Text="DEFAULT TEXT IS HERE"></asp:Label>

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:PermitsConnectionString %>" SelectCommand="SELECT     vPERMITS.MCDNUM, vPERMITS.ISSUEDTO, vPERMITS.DATEISSUED, vPERMITS.LOCATION + ' --- ' + vPERMITS.FEATURE AS LOCATION, vPERMITS.PURPOSE, 
                      vPERMITS.EXPIREDATE ,  (CAST(THETYPE AS varchar(12)) + ' - ' + DESCRIPTION) as PERMIT, vPERMITS.AUTOID, vPERMITS.STATUS 
FROM         PERMITTYPES RIGHT OUTER JOIN
                      vPERMITS ON PERMITTYPES.PERMITCODE = vPERMITS.THETYPE ORDER BY MCDNUM"></asp:SqlDataSource>

    <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:PermitsConnectionString %>" SelectCommand="        SELECT     *
         FROM       vPERMITS 
where AUTOID =@AUTOID">
        <SelectParameters>
            <asp:Parameter DefaultValue="1" Name="AUTOID" />
        </SelectParameters>
    </asp:SqlDataSource>

    <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:PermitsConnectionString %>" SelectCommand="SELECT distinct [STATUS] FROM [vPERMITS] order by STATUS"></asp:SqlDataSource>



    <telerik:RadGrid ID="RadGrid1" runat="server" AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" CellSpacing="0" DataSourceID="SqlDataSource1" GridLines="None" Height="700px" PageSize="100" ShowFooter="True" ShowGroupPanel="True" AutoGenerateColumns="False" Style="margin-top: 0px; margin-right: 50px;" OnNeedDataSource="RadGrid1_NeedDataSource" EnableLinqExpressions='False'>
        <GroupingSettings CaseSensitive="false" />
        <ClientSettings AllowColumnsReorder="True" AllowDragToGroup="True" ReorderColumnsOnClient="True">
            <Selecting AllowRowSelect="True" />
            <Scrolling AllowScroll="True" UseStaticHeaders="True" />
            <Resizing AllowColumnResize="True" AllowResizeToFit="True" AllowRowResize="True" EnableRealTimeResize="True" ResizeGridOnColumnResize="True" />
            <Animation AllowColumnReorderAnimation="True" AllowColumnRevertAnimation="True" />
        </ClientSettings>
        <MasterTableView DataSourceID="SqlDataSource1" DataKeyNames="AUTOID" AllowMultiColumnSorting="True" GroupLoadMode="Server">
            <CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>

            <RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column">
                <HeaderStyle Width="20px"></HeaderStyle>
            </RowIndicatorColumn>

            <ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column">
                <HeaderStyle Width="20px"></HeaderStyle>
            </ExpandCollapseColumn>

            <Columns>
                <telerik:GridHyperLinkColumn AllowFiltering="False" AllowSorting="False" DataNavigateUrlFields="AUTOID" DataNavigateUrlFormatString="MCDPermitView.aspx?ID={0}" DataTextField="AUTOID" EditFormHeaderTextFormat="test {0}:" FilterControlAltText="Filter AUTOIDCOLUMN column" HeaderText=" " ImageUrl="/images/Info-Small.png" UniqueName="AUTOIDCOLUMN">

                    <HeaderStyle Width="30px" />

                </telerik:GridHyperLinkColumn>

                <telerik:GridBoundColumn DataField="MCDNUM" DataType="System.Double" FilterControlAltText="Filter MCDNUM column" HeaderText="MCDNUM" SortExpression="MCDNUM" UniqueName="MCDNUM" FilterControlWidth="30px">
                    <HeaderStyle Width="75px" />
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="ISSUEDTO" FilterControlAltText="Filter ISSUEDTO column" HeaderText="ISSUEDTO" SortExpression="ISSUEDTO" UniqueName="ISSUEDTO">
                    <HeaderStyle Width="150px" />
                </telerik:GridBoundColumn>



                <telerik:GridBoundColumn DataField="DATEISSUED" DataType="System.DateTime" FilterControlAltText="Filter DATEISSUED column" HeaderText="DATEISSUED"
                    SortExpression="DATEISSUED" UniqueName="DATEISSUED" DataFormatString="{0:d}" HeaderStyle-Width="350px">
                    <FilterTemplate>
                        From:
                        <telerik:RadDatePicker ID="FromOrderDatePicker" runat="server" Width="100px" ClientEvents-OnDateSelected="FromDateSelectedDateIssued"
                            MinDate="01-01-1918" MaxDate="12-31-2020" FocusedDate="01-01-1970" DbSelectedDate='<%# startDateDateIssue %>' />
                        <br />
                        To: &nbsp;&nbsp;&nbsp;&nbsp;
                        <telerik:RadDatePicker ID="ToOrderDatePicker" runat="server" Width="100px" ClientEvents-OnDateSelected="ToDateSelectedDateIssued"
                            MinDate="01-01-1918" MaxDate="12-31-2020" FocusedDate="12-31-2020" DbSelectedDate='<%# endDateDateIssue %>' />
                        <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
                            <script type="text/javascript">
                                function FromDateSelectedDateIssued(sender, args) {
                                    var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                    var ToPicker = $find('<%# ((GridItem)Container).FindControl("ToOrderDatePicker").ClientID %>');

                                    var fromDate = FormatSelectedDate(sender);
                                    var toDate = FormatSelectedDate(ToPicker);

                                    tableView.filter("DATEISSUED", fromDate + " " + toDate, "Between");

                                }
                                function ToDateSelectedDateIssued(sender, args) {
                                    var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                    var FromPicker = $find('<%# ((GridItem)Container).FindControl("FromOrderDatePicker").ClientID %>');

                                    var fromDate = FormatSelectedDateDateIssued(FromPicker);
                                    var toDate = FormatSelectedDateDateIssued(sender);

                                    tableView.filter("DATEISSUED", fromDate + " " + toDate, "Between");
                                }
                                function FormatSelectedDateDateIssued(picker) {
                                    var date = picker.get_selectedDate();
                                    var dateInput = picker.get_dateInput();
                                    var formattedDate = dateInput.get_dateFormatInfo().FormatDate(date, dateInput.get_displayDateFormat());

                                    return formattedDate;
                                }
                            </script>
                        </telerik:RadScriptBlock>
                    </FilterTemplate>






                    <HeaderStyle Width="148px"></HeaderStyle>






                </telerik:GridBoundColumn>




                <telerik:GridBoundColumn DataField="LOCATION" FilterControlAltText="Filter LOCATION column" HeaderText="LOCATION" ReadOnly="True" SortExpression="LOCATION" UniqueName="LOCATION">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="PURPOSE" FilterControlAltText="Filter PURPOSE column" HeaderText="PURPOSE" SortExpression="PURPOSE" UniqueName="PURPOSE">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="EXPIREDATE" DataType="System.DateTime" FilterControlAltText="Filter EXPIREDATE column" HeaderText="EXPIREDATE" SortExpression="EXPIREDATE" UniqueName="EXPIREDATE" DataFormatString="{0:d}" HeaderStyle-Width="350px">
                    <FilterTemplate>
                        From:
                        <telerik:RadDatePicker ID="FromOrderDatePicker2" runat="server" Width="100px" ClientEvents-OnDateSelected="FromDateSelected"
                            MinDate="01-01-1918" MaxDate="12-31-2020" FocusedDate="01-01-1970" DbSelectedDate='<%# startDateExpireDate %>' />
                        <br />
                        To: &nbsp;&nbsp;&nbsp;&nbsp;
                        <telerik:RadDatePicker ID="ToOrderDatePicker2" runat="server" Width="100px" ClientEvents-OnDateSelected="ToDateSelected"
                            MinDate="01-01-1918" MaxDate="12-31-2020" FocusedDate="12-31-2020" DbSelectedDate='<%# endDateExpireDate %>' />
                        <telerik:RadScriptBlock ID="RadScriptBlock2" runat="server">
                            <script type="text/javascript">
                                function FromDateSelected(sender, args) {
                                    var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                    var ToPicker = $find('<%# ((GridItem)Container).FindControl("ToOrderDatePicker2").ClientID %>');

                                    var fromDate = FormatSelectedDate(sender);
                                    var toDate = FormatSelectedDate(ToPicker);

                                    tableView.filter("EXPIREDATE", fromDate + " " + toDate, "Between");

                                }
                                function ToDateSelected(sender, args) {
                                    var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                    var FromPicker = $find('<%# ((GridItem)Container).FindControl("FromOrderDatePicker2").ClientID %>');

                                    var fromDate = FormatSelectedDate(FromPicker);
                                    var toDate = FormatSelectedDate(sender);

                                    tableView.filter("EXPIREDATE", fromDate + " " + toDate, "Between");
                                }
                                function FormatSelectedDate(picker) {
                                    var date = picker.get_selectedDate();
                                    var dateInput = picker.get_dateInput();
                                    var formattedDate = dateInput.get_dateFormatInfo().FormatDate(date, dateInput.get_displayDateFormat());

                                    return formattedDate;
                                }
                            </script>
                        </telerik:RadScriptBlock>
                    </FilterTemplate>
                    <HeaderStyle Width="148px"></HeaderStyle>
                </telerik:GridBoundColumn>

                <telerik:GridBoundColumn DataField="PERMIT" FilterControlAltText="Filter PERMIT column" HeaderText="PERMIT" SortExpression="PERMIT" UniqueName="PERMIT" ReadOnly="True">
                </telerik:GridBoundColumn>

                <telerik:GridBoundColumn DataField="AUTOID" DataType="System.Int32" Display="False" FilterControlAltText="Filter AUTOID column" HeaderText="AUTOID" ReadOnly="True" UniqueName="AUTOID">
                </telerik:GridBoundColumn>

                <telerik:GridBoundColumn UniqueName="STATUS" DataField="STATUS" FilterControlAltText="Filter column column" HeaderText="STATUS">


                   <FilterTemplate>
                        <telerik:RadComboBox ID="RadComboBoxTitle" DataSourceID="SqlDataSource3" DataTextField="STATUS"
                            DataValueField="STATUS" Height="200px" AppendDataBoundItems="true" SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("STATUS").CurrentFilterValue %>'
                            runat="server" OnClientSelectedIndexChanged="TitleIndexChanged">
                            <Items>
                                <telerik:RadComboBoxItem Text="All" />
                            </Items>
                        </telerik:RadComboBox>
                        <telerik:RadScriptBlock ID="RadScriptBlock10" runat="server">
                            <script type="text/javascript">
                                function TitleIndexChanged(sender, args) {
                                    var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                    tableView.filter("STATUS", args.get_item().get_value(), "EqualTo");

                                }
                            </script>
                        </telerik:RadScriptBlock>
                    </FilterTemplate> 

                  


                </telerik:GridBoundColumn>

            </Columns>

            <EditFormSettings>
                <EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
            </EditFormSettings>



            <NestedViewSettings DataSourceID="SqlDataSource2">
                <ParentTableRelation>
                    <telerik:GridRelationFields DetailKeyField="AUTOID" MasterKeyField="AUTOID" />
                </ParentTableRelation>
            </NestedViewSettings>
            <NestedViewTemplate>
                <asp:Panel ID="NestedViewPanel" runat="server" CssClass="viewWrap">
                    <div class="contactWrap">
                        <fieldset style="padding: 10px;">
                            <legend style="padding: 5px;"><b>Details for Permit#:&nbsp; &nbsp;<%#Eval("MCDNUM") %></b></legend>
                            <table>
                                <tbody>
                                    <tr>
                                        <td>
                                            <table>
                                                <tbody>
                                                    <tr>
                                                        <td>Status:
                                                        </td>
                                                        <td>
                                                            <asp:Label ID="cityLabel" Text='<%#Bind("STATUS") %>' runat="server"></asp:Label>
                                                        </td>
                                                    </tr>
                                                    <tr>
                                                        <td>Drawing Number:
                                                        </td>
                                                        <td>
                                                            <asp:Label ID="Label2" Text='<%#Bind("DRAWINGNO") %>' runat="server"></asp:Label>
                                                        </td>
                                                    </tr>
                                                    <tr>
                                                        <td>Scanned?:
                                                        </td>
                                                        <td>
                                                            <asp:Label ID="Label3" Text='<%#Bind("SCANNED") %>' runat="server"></asp:Label>
                                                        </td>
                                                    </tr>
                                                    <tr>
                                                        <td>Contact:
                                                        </td>
                                                        <td>
                                                            <asp:Label ID="Label4" Text='<%#Bind("CONTACT") %>' runat="server"></asp:Label>
                                                        </td>
                                                    </tr>
                                                    <tr>
                                                        <td>Phone:
                                                        </td>
                                                        <td>
                                                            <asp:Label ID="Label5" Text='<%#Bind("PHONE") %>' runat="server"></asp:Label>
                                                        </td>
                                                    </tr>
                                                    <tr>
                                                        <td>Drawing Number:
                                                        </td>
                                                        <td>
                                                            <asp:Label ID="Label6" Text='<%#Bind("DRAWINGNO") %>' runat="server"></asp:Label>
                                                        </td>
                                                    </tr>
                                                    <tr>
                                                        <td>Board:
                                                        </td>
                                                        <td>
                                                            <asp:Label ID="Label7" Text='<%#Bind("BOARD") %>' runat="server"></asp:Label>
                                                        </td>
                                                    </tr>
                                                </tbody>
                                            </table>
                                        </td>
                                        <td>
                                            <img src='<%# Page.ResolveUrl("/images/Info-Small.png?test=") + Eval("AUTOID") %>.jpg'
                                                alt="Customer Image" />
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                        </fieldset>
                    </div>
                </asp:Panel>
            </NestedViewTemplate>







        </MasterTableView>

        <FilterMenu EnableImageSprites="False"></FilterMenu>
    </telerik:RadGrid>



    <strong>Report based on the selection above</strong><br />
    <br />



    <telerik:ReportViewer ID="ReportViewer2" runat="server" Width="97%" Height="700px" Style="margin-top: 0px; margin-right: 50px;">

            <typereportsource typename="MCD_INTRANET.PermitReport2, MCD INTRANET, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"></typereportsource>

    </telerik:ReportViewer>




</asp:Content>

Open in new window




Here is the Code behind

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Data;
using System.Configuration;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Telerik.Web.UI;

namespace MCD_INTRANET
{
    public partial class MCDPermitView : System.Web.UI.Page

    {


      

        protected void Page_Load(object sender, EventArgs e)
        {

            Button2.Visible = false;

            if (Page.IsPostBack)
            {

                string FilterExpression = RadGrid1.MasterTableView.FilterExpression;
                string SortExpression = RadGrid1.MasterTableView.SortExpressions.GetSortString();


                if (string.IsNullOrEmpty(FilterExpression) == true)
                {

                }
                else
                {
                    FilterExpression =  " Where " + FilterExpression;

                }




                if (string.IsNullOrEmpty(SortExpression) == true)
                {

                }
                else
                {
                    FilterExpression = FilterExpression + " Order by " + SortExpression;

                }

               // Button2.Visible = true;
                MESSAGElbl.Text = "Current report query: " + FilterExpression;
                System.Web.HttpContext.Current.Session["PERMITREPORTSQL"] = FilterExpression;
            }
            else
            {
                MESSAGElbl.Text = "";
                System.Web.HttpContext.Current.Session["PERMITREPORTSQL"] = "";
            }



            ReportViewer2.Report = new PermitReport2("ACTIVE");


            //ReportViewer2.Report = new PermitReport2(Request.Form["Status"] as String);
            //Tried this and does not fire NeedDataSource in Report ClassLibrary 
            (ReportViewer2.Report as PermitReport2).DataSource = null;
            ReportViewer2.DataBind();
            ReportViewer2.RefreshReport();

        }

        
        protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
        {


            if (e.CommandName == RadGrid.FilterCommandName)
            {
                Pair filterPair = (Pair)e.CommandArgument;

                switch (filterPair.Second.ToString())
                {
                    case "DATEISSUED":
                        this.startDateDateIssue = ((e.Item as GridFilteringItem)[filterPair.Second.ToString()].FindControl("FromOrderDatePicker") as RadDatePicker).SelectedDate;
                        this.endDateDateIssue =   ((e.Item as GridFilteringItem)[filterPair.Second.ToString()].FindControl("ToOrderDatePicker") as RadDatePicker).SelectedDate;
                        break;
                    case "EXPIREDATE":
                        this.startDateExpireDate = ((e.Item as GridFilteringItem)[filterPair.Second.ToString()].FindControl("FromOrderDatePicker2") as RadDatePicker).SelectedDate;
                        this.endDateExpireDate =   ((e.Item as GridFilteringItem)[filterPair.Second.ToString()].FindControl("ToOrderDatePicker2") as RadDatePicker).SelectedDate;

                        break;
                    default:
                        break;
                }
            }



        }

        protected DateTime? startDateDateIssue
        {
            set
            {
                ViewState["strDDateIssue"] = value;
                Context.Items["strDDateIssue"] = value;
            }
            get
            {
              //   if (ViewState["strDDateIssue"] != null)
              //      return (DateTime)ViewState["strDDateIssue"];
              //  else
              //      return new DateTime(1918, 1, 2);


                if (Context.Items["strDDateIssue"] != null)
                {
                    return (DateTime)Context.Items["strDDateIssue"];
                }
                else
                {
                    return new DateTime(1918, 1, 2);
                }



            }
        }
        protected DateTime? endDateDateIssue
        {
            set
            {
                ViewState["endDDateIssue"] = value;
                Context.Items["endDDateIssue"] = value;

            }
            get
            {
             //   if (ViewState["endDDateIssue"] != null)
             //       return (DateTime)ViewState["endDDateIssue"];
             //   else
             //       return new DateTime(2020, 12, 29);

                if (Context.Items["endDDateIssue"] != null)
                    return (DateTime)Context.Items["endDDateIssue"];
                else
                    return new DateTime(2020, 12, 29);
            }
        }





        protected DateTime? startDateExpireDate
        {
            set
            {
                ViewState["strDExpireDate"] = value;
            }
            get
            {
                if (ViewState["strDExpireDate"] != null)
                    return (DateTime)ViewState["strDExpireDate"];
                else
                    return new DateTime(1918, 1, 3);
            }
        }
        protected DateTime? endDateExpireDate
        {
            set
            {
                ViewState["endDExpireDate"] = value;
            }
            get
            {
                if (ViewState["endDExpireDate"] != null)
                    return (DateTime)ViewState["endDExpireDate"];
                else
                    return new DateTime(2020, 12, 28);
            }
        }

        protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
        {

        }

        protected void Button2_Click(object sender, EventArgs e)
        {

            // grab the MESSAGElbl.Text and then redirect to the report viewer
            
            Response.Redirect("PermitReportView2.aspx");


        }
    }
}

Open in new window

Avatar of Obadiah Christopher
Obadiah Christopher
Flag of India image

Does the page postback on click of the calendar control?

Did you try putting a breakpoint in the below code and check if the code does come here.

protected DateTime? endDateDateIssue
        {
            set
            {
                ViewState["endDDateIssue"] = value;
                Context.Items["endDDateIssue"] = value;

            }
}
Avatar of Kristen Jones

ASKER

It happens on the update of the calender so yes,,

Yes I put a break point and it skips over the set  any ideas why?
So I go back to the ASPX page and look at the events and the ItemCommand event is blank, even though I manually created the handler in the code behind

 protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)

I created the event from Studio and it auto generated this line

 protected void RadGrid1_ItemCommand1(object sender, GridCommandEventArgs e)

** Adding the 1 after ItemCommand  I moved the code into that event rebuilt and it now works  

Any idea how/why this could happen..  makes me scred that any code I write on the CS file will not talk to the ASPX page !
If you created RadGrid1_ItemCommand manually in code-behind

and then if you double click in design-mode and then it will create RadGrid1_ItemCommand1.

That is by design. You need to delete the event from code-behind and then doubleclick on the itemcommand event in design mode.
So my question is why didn't my manual entry register with Visual Studio?
ASKER CERTIFIED SOLUTION
Avatar of Obadiah Christopher
Obadiah Christopher
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial