Welcome Guest Search | Active Topics | Sign In | Register

Datepicker not working as expected Options
Versile Johnson
Posted: Monday, October 22, 2007 6:36:57 PM
Rank: Advanced Member
Groups: Member

Joined: 8/25/2007
Posts: 34
Hi,

I purchased your controls a month or two ago for use with my website, I was elated to learn that I got a new datepicker - and mistakenly replaced all of my old datepickers prior to testing it thoroughly. So now I have at least a dozen datepicker controls not working properly. When I attempt to access SelectedDateString I get the following error:

Unable to cast object of type 'System.String' to type 'EO.Web.DateCollection'.

I have a page that loads the process prior to loading the page which seems to be the cause, I can access these properties perfectly if I do so AFTER the first page load.
eo_support
Posted: Monday, October 22, 2007 6:40:23 PM
Rank: Administration
Groups: Administration

Joined: 5/27/2007
Posts: 24,088
Hi Versile,

Please post the complete stack trace of the error message and related code that triggers the error.

Thanks
Versile Johnson
Posted: Monday, October 22, 2007 6:45:24 PM
Rank: Advanced Member
Groups: Member

Joined: 8/25/2007
Posts: 34
Full Page Code

Code: C#
public partial class Managers_clockin_graph : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            start_dpicker.SelectedDate = DateTime.Now.AddDays(-8);
            end_dpicker.SelectedDate = DateTime.Now.AddDays(-1);
        }
    }

    protected void BuildIt(ZedGraph.Web.ZedGraphWeb webObject, System.Drawing.Graphics g, ZedGraph.MasterPane pane)
    {
        pane.PaneList.Clear();
        pane.Fill.Color = System.Drawing.Color.White;
        GraphPane mypane = new GraphPane();
        mypane.Title.Text = "IVR Clock-In's by Office\nLast Seven Days";
        //mypane.XAxis.Title.Text = "Team" 
        //mypane.YAxis.Title.Text = "Total Jobs" 
        mypane.XAxis.Type = AxisType.Text;
        mypane.XAxis.MinorTic.IsInside = true;
        mypane.XAxis.MajorTic.IsBetweenLabels = true;
        System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(southernstar.ssi.connection());
        System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("stv_graph_ivr_byofc", conn);
        cmd.CommandType = CommandType.StoredProcedure;
[size=8][color=brown]            string xx = start_dpicker.SelectedDateString;
            string yy = end_dpicker.SelectedDate.ToShortDateString();
            cmd.Parameters.AddWithValue("@start", xx);
            cmd.Parameters.AddWithValue("@end", yy);[/color][/size]
        System.Data.DataTable objtb = new System.Data.DataTable();
        try
        {
            conn.Open();
            System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(cmd);
            adapter.Fill(objtb);
            conn.Close();
        }
        catch (Exception ex)
        {
            string xyz = ex.Message;
            conn.Close();
        }
        string[] str = { "0" };
        double[] x = { 0 };
        double[] y = { 0 };
        double[] z = { 0 };
        Array.Resize(ref x, objtb.Rows.Count);
        Array.Resize(ref y, objtb.Rows.Count);
        Array.Resize(ref str, objtb.Rows.Count);
        Array.Resize(ref z, objtb.Rows.Count);
        for (int i = 0; i <= objtb.Rows.Count - 1; i++)
        {
            System.Data.DataRow row = objtb.Rows[i];
            str.SetValue(row["locshort"].ToString(), i);
            x.SetValue(double.Parse(row["clockins"].ToString()), i);
            y.SetValue(double.Parse(row["jobs"].ToString()), i);
            z.SetValue(double.Parse("0"), i);
        }
        BarItem mycurve1 = mypane.AddBar("Clockins", z, x, System.Drawing.Color.Green);
        BarItem mycurve2 = mypane.AddBar("Jobs", z, y, System.Drawing.Color.Red);
        mypane.XAxis.Scale.TextLabels = str;
        mypane.XAxis.MajorTic.IsBetweenLabels = true;
        pane.Add(mypane);
        pane.AxisChange(g);
        mypane.YAxis.Scale.Max += mypane.YAxis.Scale.MajorStep;
        BarItem.CreateBarLabels(mypane, true, "F0");
    }
}


Stack Trace

System.InvalidCastException was unhandled by user code
Message="Unable to cast object of type 'System.String' to type 'EO.Web.DateCollection'."
Source="EO.Web"
StackTrace:
at EO.Web.Calendar.get_SelectedDates()
at EO.Web.Calendar.get_SelectedDate()
at EO.Web.Calendar.get_SelectedDateString()
at Managers_clockin_graph.BuildIt(ZedGraphWeb webObject, Graphics g, MasterPane pane) in c:\Documents and Settings\versile.SSI\Desktop\SSI_Web\Managers\clockin_graph.aspx.cs:line 40
at ZedGraph.Web.ZedGraphWeb.OnDrawPane(Graphics g, MasterPane mp)
at ZedGraph.Web.ZedGraphWeb.CreateGraph(Stream OutputStream, ImageFormat Format, Boolean bShowTransparency)
at ZedGraph.Web.ZedGraphWeb.Render(HtmlTextWriter output)

eo_support
Posted: Monday, October 22, 2007 6:51:49 PM
Rank: Administration
Groups: Administration

Joined: 5/27/2007
Posts: 24,088
Hi,

You can not access the Calendar's SelectedDateString property after it is rendered. Once the calendar is already rendered, it's considered to have already finished its mission and its state data becomes unusable. Try to access SelectedDateString before render and it should give you the correct value without problem.

Thanks
Versile Johnson
Posted: Monday, October 22, 2007 6:58:51 PM
Rank: Advanced Member
Groups: Member

Joined: 8/25/2007
Posts: 34
ok - I got it working using hiddenfields, I must have messed it up the first time I tried it.
eo_support
Posted: Monday, October 22, 2007 7:10:39 PM
Rank: Administration
Groups: Administration

Joined: 5/27/2007
Posts: 24,088
I am not sure if I get your question correctly: How to get a value inside Page_Load and pass it some other control to be used during its Render method. If that is the question, then there are many ways to do it. One of the easiest is to create a member/property on that control and then assign whatever value to that property during Page_Load. This is a very commonly used code techniques that has nothing to do with our product.

I am not sure what you mean by "GMDatePicker accomplished this?". Each controls have their own way of doing things, so sometimes you do need to change your code to accommodate when you switch to a new product.
Versile Johnson
Posted: Monday, October 22, 2007 7:22:04 PM
Rank: Advanced Member
Groups: Member

Joined: 8/25/2007
Posts: 34
It's fine now - I got it to work, I'm still sort of confused - but your explanation makes sense to me (now). For some reason when I tried to modify the code to use hiddenfields (which is what I would normally do) it failed similarly. I tried again and it is working perfectly. And yes this is true, and this datepicker is much cleaner than the other and bundled with other tools :)


You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.