asp:Calendar DateClicked event (not just SelectionChanged) - asp.net

I am using the standard asp:Calendar control. When a user clicks a date, I am showing a modal popup by handling the SelectionChanged event.
However this means that nothing happens if the user clicks a date, then closes the popup, then clicks the same date again.
I'd rather be handling a DateClick event, and do away with the concept of having a selected date altogether.
Can this be achieved using the asp:Calendar?

Found a workaround:
In the SelectionChanged event handler, just call
calendar.SelectedDates.Clear();

I had a similar problem - I solved it by preventing the user from selecting the currently selected date. I put the following in the DayRender event:
If e.Day.Date = DateValue(calCalendar.SelectedDate) Then
e.Day.IsSelectable = False
End If

Related

Don't create a new event on eventReceive with Full Calendar

I'm working on a page where events are creating by dragging from a list onto a full calendar object. I'm then opening a dialog (bootstrap modal) to let the user edit the event.
During the edit, they might change the date or time of the initial drop. They could also conceivably cancel the event creation.
What I'd like to do is:
Don't create the initial event and just save after the modal is responded to. That is, I'd like eventReceive to fire, so I can trap it, but not have FullCalendar add the event to the calendar.
It's all here, just not in a 'recipe' manner: https://fullcalendar.io/docs/external-dragging
Set create to false in the Draggable and handle the drag with the drop event.

Pending postbacks with TextChanged event and saving

I have a textbox called 'Value' (among other textboxes) on an ASP page. I have an event handler hooked up to the textbox so that when the textbox contents are changed, the event handler runs (control.textchanged event)
I have another command button ('Save') which saves the textbox value to the database and then calls window.close() via javascript. The problem is that when the textbox is changed and the user clicks on the 'Save' button without clicking off the textbox, the value is somehow saved in the database but the javascript does not run. Then, the user will think the value did not save because the window did not automatically close, and when they click 'save' again, the value in the textbox saves for a second time and then the javascript runs which closes the window.
It is very similar to this issue (http://forums.asp.net/t/523981.aspx?Pending+Postback+Troubles) but i do not understand the solution provided there.
Can anyone provide a method which may prevent the record being created twice in this instance?
Thanks,
c

Button in CustomControl added in OnClick doesn't postback until second click

I have the following scenario:
UserControlA contains a <asp:Button id="bSomeid" onClick="AddItem" /> with some code to an item to a shopping basket in AddItem.
UserControlB contains some LinkButton's that dynamically add a selection of UserControlA to the page in the OnClick event.
This is all done in an UpdatePanel. It is a little more complicated but I have pruned the information to what I believe is causing the problem, I will add more information if necessary.
The problem I have is that it takes 2 clicks for the AddItem event to trigger after I have added the items to the page after clicking the LinkButton.
I understand why this is happening - it is to late in the page cycle to register events for the next post back in the onclick - but can anyone think of a way around this? Can I force an event to be triggered on the next postback? I have tried to think of a way to run my code in page_load but I requuire access to the sender in the onClick.
Using .NET 4.0.
EDIT
I managed to find a way to get the link button sending the request in the Page_Load (using Request.Form["__EVENTTARGET"];) so I moved my code to the Page_load event. It still requires 2 clicks so I am assuming it isn't something to do with the onClick being registered to late.
Are there any other general things to check that could cause a button to require 2 clicks to post an event properly?
If your suspicion about being late in page life cycle is true then you can try using ScriptManager.RegisterAsyncPostBackControl method to register dynamically added controls in the link button click - considering that your button is within user control, you need to add public method into UserControlA that would actually register the button bSomeid1 and link button click from UserControlB would actually call the A control's method.
EDIT :
Another cause for button click not happening can be that button being dynamic control is not added in the page hierarchy when post-back happens (or it gets added very late in the page life cycle when the post back data is already processed). A really full-proof solution should add dynamic controls back to the page hierarchy in page_load it-self (and strictly maintaining same controls ids within hierarchy). If that's not possible then you can sniff the request (Request.Form) to detect the post-back.
In your case, you should ascertain if the button is indeed causing the post-back on each click. If yes, what is the POST data (Request.Form) for the first request - what is the __EVENTTARGET value on the first click (and post-back)? That should start your trouble-shooting.
On the other hand, a simple work-around could be to use html anchor element (you can still use link button) and have a javascript handler in the click event that would set some hidden variable and then submit the form (you can simulate the click on hidden button to trigger ASP.NET client side submit pipeline) . Now the hidden variable value can be used on the post-back to determine which link button has been clicked.
"Are there any other general things to check that could cause a button to require 2 clicks to post an event properly?"
Does it require two clicks on the control, or does it take accept a single click elsewhere on the screen, and then fire first time with a single click on the control?
I have my own (similar) issue with the Updatepanel where the first (expected) trigger does not fire and it seems that a single click elsewhere, and then the subsequent triggers fires first time (which totals 2 clicks)
[edit] Since you are working on this ATM, it may help me as well. Do you have a textbox with a trigger event on it? I do, and if I leave this blank (so that it does not fire) then there is no need for a second click.

AutoPostBack using ASP.NET text box and AjaxControlToolkit CalendarExtender

I would like to like to trigger a postback after user selects a date. Am using the AjaxControlToolkit's CalendarExtender control. The date textbox which is associated to the extender is editable too which enables the user to manually enter the date in a particular format. Values of quite a few controls which reside on that page are to be updated depending on the newly selected date and hence going to the server is a must.
I did try using the OnClientDateSelectionChanged property of the extender which lets me hook in my custom javascript, using which i was planning to trigger a postback but for some odd reason the function gets called only if the date is selected using an extender and not when manually edited (Hoping that it doesn't catch the click event over textbox's change).
Am sure many have tackled this issue before. Please do share. Thanks.
Here it is, Keep It Simple as they say. Set AutoPostBack of the text box to true and capture the OnTextChanged event on the server side.

autopackback dropdownlist only if changed using mouse

I would like to perform a postback when the droplistlist selected value changes, but only if it was changed via expanding the downdown and clicking an option, not is the user tabs to the control and uses the arrow keys. The reason for this is simple, keyboard accessibility.
Postbacks are triggered using __doPostBack('uniqueidofcontrol', 'commandname'); so when the list changes value (I believe in onchange event), it posts to the server. You would need to not set autopostback. What you would need to do is tap into the click event (if there is one) and then call __doPostBack(..) method upon that event.
HTH.

Resources