JessyRobinson1234
asked on
How to dynamically fetch closest selected value on dropdown formfields.
Hello, I have a form with two dropdown form fields. The user wants to have the selectedvalue prepolated: DDLFrom needs to be preselected to yesterday's value, the DDLTo needs to be preselected to today's date. Here is the catch: the dropdown fields are dynamically loaded from a table and only displays the dates where an issue was logged.
See attached screenshot. So my question is for the DDLFrom I need the closest date to yesterday and for DDLTo needs to be the most recent date.
This code throws an error since there was no today's date nor was there a date for yesterday since it was the weekend and so no activities.
See attached screenshot. So my question is for the DDLFrom I need the closest date to yesterday and for DDLTo needs to be the most recent date.
This code throws an error since there was no today's date nor was there a date for yesterday since it was the weekend and so no activities.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Me.ddlFrom.SelectedValue = DateTime.Now.AddDays(-1).ToString("MM/dd/yyyy")
Me.ddlTo.SelectedValue = DateTime.Now.ToString("MM/dd/yyyy")
End If
End Sub
SS.jpg
ASKER
Thank you, I get the error on While Not ddlFrom.Items.Contains(dt) :
Value of type 'String' cannot be converted to 'System.Web.UI.WebControls .ListItem' .
Value of type 'String' cannot be converted to 'System.Web.UI.WebControls
try:
Contains (New ListItem(dt))
Contains (New ListItem(dt))
ASKER
Error on: dt = DateTime.Parse(dt).AddDays (-1).ToStr ing("mm/dd /yyyy")
String was not recognized as a valid DateTime.
String was not recognized as a valid DateTime.
mm should be MM
ASKER
New Error on dt = DateTime.Parse(dt).AddDays (-1).ToStr ing("MM/dd /yyyy")
The added or subtracted value results in an un-representable DateTime.
Parameter name: value
The added or subtracted value results in an un-representable DateTime.
Parameter name: value
Needs to be done in both places:
dt = Datetime.Now.AddDays(-1).T ostring("M M/dd/yyyy" )
while not ddlFrom.Items.Contains(dt)
dt = DateTime.Parse(dt).AddDays (-1).Tostr ing("MM/dd /yyyy")
end while
dt = Datetime.Now.AddDays(-1).T
while not ddlFrom.Items.Contains(dt)
dt = DateTime.Parse(dt).AddDays
end while
ASKER
I actually did and still get the error.
Rework:
dim days as integer = 2
dt = Datetime.Now.AddDays(-1).T ostring("M M/dd/yyyy" )
while not ddlFrom.Items.Contains(dt)
dt = DateTime.Now.AddDays(-1 * days).Tostring("MM/dd/yyyy ")
days += 1 'keep going backward in time.
end while
dim days as integer = 2
dt = Datetime.Now.AddDays(-1).T
while not ddlFrom.Items.Contains(dt)
dt = DateTime.Now.AddDays(-1 * days).Tostring("MM/dd/yyyy
days += 1 'keep going backward in time.
end while
ASKER
Hi I am following the logic. However, it goes in an infinite loop and throws this error:
The added or subtracted value results in an un-representable DateTime.
Parameter name: value
The added or subtracted value results in an un-representable DateTime.
Parameter name: value
It means it's not finding the date.
How is your combobox populated?
How is your combobox populated?
ASKER
ASP Tag:
Stored Procedure:
<asp:DropDownList ID="ddlFrom" runat="server" DataSourceID="sdsWE" DataTextField="MyDate" DataValueField="MyDate" CssClass="form" AutoPostBack="True" ></asp:DropDownList>
<asp:SqlDataSource ID="sdsWE" runat="server" ConnectionString="<%$ ConnectionStrings:BusDevConnectionString %>" SelectCommand="View_WE_DD" SelectCommandType="StoredProcedure"></asp:SqlDataSource>
Stored Procedure:
SELECT distinct convert(varchar(10),Ship_Date,101) 'MyDate',
ship_date 'ResolvedDate'
-- convert(varchar(10),Resolved_Date,101) 'MyDate'
FROM Lear_Shipping
where convert(varchar(10),Ship_Date,101) IS NOT NULL AND Ship_Date > '12/01/2011'
Order By 'ResolvedDate' DESC
Try this:
while not ddlFrom.Items.Contains(new ListItem(dt,dt))
dt = DateTime.Now.AddDays(-1 * days).Tostring("MM/dd/yyyy ")
days += 1 'keep going backward in time.
end while
ddlFrom.SelectedValue = dt
while not ddlFrom.Items.Contains(new
dt = DateTime.Now.AddDays(-1 * days).Tostring("MM/dd/yyyy
days += 1 'keep going backward in time.
end while
ddlFrom.SelectedValue = dt
ASKER
Error:
The added or subtracted value results in an un-representable DateTime. Parameter name: value
The added or subtracted value results in an un-representable DateTime. Parameter name: value
are there actual values in the ddlFrom?
If so, can you send a screen shot? Is it finding the date or still overflowing?
If so, can you send a screen shot? Is it finding the date or still overflowing?
ASKER
Thanks. That didn't work. For some odd reason the selected value of ddlFrom remains ""
ASKER
I think it may have something to do with the fact that I am running this code on page_load and therefore no databound yet. When I add ddlFrom.databind() prior to the while loop it works.
ASKER
This works, but can i wirte it all in one and the same while loop?
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim dtFrom As String
Dim dtTo As String
Dim days As Integer = 2
ddlFrom.DataBind()
ddlTo.DataBind()
dtFrom = DateTime.Now.AddDays(-1).ToString("MM/dd/yyyy")
dtTo = DateTime.Now.ToString("MM/dd/yyyy")
While Not ddlFrom.Items.Contains(New ListItem(dtFrom, dtFrom))
dtFrom = DateTime.Now.AddDays(-1 * days).ToString("MM/dd/yyyy")
days += 1 'keep going backward in time.
End While
While Not ddlTo.Items.Contains(New ListItem(dtTo, dtTo))
dtTo = DateTime.Now.AddDays(-1 * days).ToString("MM/dd/yyyy")
days += 1 'keep going backward in time.
End While
ddlFrom.SelectedValue = dtFrom
ddlTo.SelectedValue = dtTo
End If
End Sub
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
dt = Datetime.Now.AddDays(-1).T
while not ddlFrom.Items.Contains(dt)
dt = DateTime.Parse(dt).AddDays
end while
If the combobox is ordered:
ddlTo.Selectedindex = ddlTo.Items.Count -1
if it's not ordered you can do a loop.