Текстовое поле Datepicker не содержит введенного значения дата
я ввел диапазон дат, но datepicker принимает дату по умолчанию(текущую дату, как назначено) при сериализации данных.
Что я уже пробовал:
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender If Not Me.IsPostBack Then PickerFrom.SelectedDate = Today PickerTo.SelectedDate = Today 'Me.Search() 'Grid.DataBind() End If End Sub Private Sub Search() Dim strWhere As String = "" strWhere = "orderdate between '" & PickerFrom.SelectedDate.Value.ToString("MM/dd/yyyy") & "' and '" & PickerTo.SelectedDate.Value.AddDays(1).AddSeconds(-1).ToString("MM/dd/yyyy") & "' and OID=" & CStr(Filter.OrganisationId) Dim SqlCommand As New SqlCommand Dim connection As String = ConfigurationManager.ConnectionStrings("VService").ConnectionString Dim con As New SqlConnection(connection) SqlCommand.CommandText = "Custom_Analysers_PartSales_Freight" SqlCommand.Parameters.Add("@Type", SqlDbType.VarChar).Direction = ParameterDirection.Input SqlCommand.Parameters("@Type").Value = "Partsales" SqlCommand.Parameters.Add("@whereclause", SqlDbType.VarChar).Direction = ParameterDirection.Input SqlCommand.Parameters("@whereclause").Value = strWhere SqlCommand.CommandTimeout = 0 SqlCommand.Connection = con SqlCommand.CommandType = CommandType.StoredProcedure Dim sqlDA As New SqlDataAdapter(SqlCommand) Dim ds As New DataSet sqlDA.Fill(ds) Grid.DataSource = ds.Tables(0).DefaultView End Sub Protected Sub Grid_NeedDataSource(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles Grid.NeedDataSource If PickerFrom.SelectedDate.HasValue Then Me.Search() End If End Sub Protected Sub Grid_PageIndexChanged(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridPageChangedEventArgs) Handles Grid.PageIndexChanged Grid.CurrentPageIndex = e.NewPageIndex End Sub Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click Me.Search() Grid.DataBind() End Sub
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> <%@ Register Assembly="DotNetSmith.WebControls" Namespace="DotNetSmith.WebControls" TagPrefix="dns" %> <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="ajax" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <p> <dns:DotNetSmithUserMessageSummary ID="Umsg" runat="server" CssClass="MessageBlockError" /> </p> <table cellspacing="4" cellpadding="0" border="0" width="100%"> <tr> <td align="right"><font color="red">All amounts are exclusive of tax</font></td> </tr> </table> <fieldset id="fdsExceptionTracking" runat="server"> <legend>Parts Sales Analyser</legend> <table cellspacing="4" cellpadding="0" border="0"> <tr> <td align="right" width="35%">Select Date Range:</td> <td> <telerik:RadDatePicker ID="PickerFrom" runat="server" Width="140px" DateInput-DateFormat="dd/MM/yyyy" SkinID="CustomRadDatePickerSkin" DateInput-EmptyMessage="MinDate" MinDate="01/01/1000" MaxDate="01/01/3000"> <Calendar ID="Calendar1" runat="server"> <SpecialDays> <telerik:RadCalendarDay Repeatable="Today" ItemStyle-CssClass="rcToday" /> </SpecialDays> </Calendar> </telerik:RadDatePicker> </td> <td>To</td> <td> <telerik:RadDatePicker ID="PickerTo" runat="server" Width="140px" DateInput-DateFormat="dd/MM/yyyy" SkinID="CustomRadDatePickerSkin" DateInput-EmptyMessage="MaxDate" MinDate="01/01/1000" MaxDate="01/01/3000"> <Calendar ID="Calendar2" runat="server"> <SpecialDays> <telerik:RadCalendarDay Repeatable="Today" ItemStyle-CssClass="rcToday" /> </SpecialDays> </Calendar> </telerik:RadDatePicker> </td> <td><asp:Button ID="btnSearch" runat="server" Text="Search" /></td> </tr> </table>
Richard Deeming
strWhere = "orderdate between '" & PickerFrom.SelectedDate.Value.ToString("MM/dd/yyyy") & "' and '" & PickerTo.SelectedDate.Value.AddDays(1).AddSeconds(-1).ToString("MM/dd/yyyy") & "' and OID=" & CStr(Filter.OrganisationId)
Не делай этого так! Ваш код почти наверняка уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
Похоже, что ваша хранимая процедура использует динамический SQL без его параметризации. Вам нужно использовать процедуры sp_executesql[^] с правильно параметризованным запросом.
Manoj Jagdale
Хорошо, сэр, но может ли вышеприведенное решение решить мою проблему удержания значения в элементе управления datepicker.
Manoj Jagdale
Может быть, есть какое-то другое решение, Пожалуйста?
[no name]
Вы проверили, сохраняет ли ваш элемент управления значение, назначенное Вами при вызове функции "поиск". Вы установили значение по умолчанию для элементов управления датой на сегодня при предварительном рендеринге.