2016-07-07 8 views
0

最小値と最大値をプログラムで変更するために、asp:RangeValidatorを取得するのが苦労しています。残念ながら、私は、コンソールエラーメッセージを表示しています。ListView EditItemTemplateに含まれるasp:RangeValidatorを更新できません

'Uncaught Sys.WebForms.PageRequestManagerServerErrorException:Sys.WebForms.PageRequestManagerServerErrorException:' 'rvDateFrom'のMaximumValueプロパティの値 'を' Date 'に変換できません。

私のコードは以下の通りです。カレンダーは、UpdatePanelに含まれているListViewのEditItemTemplateに含まれています。

<ewc:CalendarPopup ID="cpDateFrom" runat="server" SelectedDate='<%# Bind("DateFrom")%>' CssClass="date"></ewc:CalendarPopup> 
<asp:RangeValidator ID="rvDateFrom" runat="server" ControlToValidate="cpDateFrom" Type="Date" ErrorMessage="Invalid"></asp:RangeValidator> 

の背後にあるコードは次のとおりです。RangeValidatorが発見された

Private Sub lvRangeValidatorTest_ItemEditing(sender As Object, e As ListViewEditEventArgs) Handles lvRangeValidator.ItemEditing 
    lvRangeValidator.EditIndex = e.NewEditIndex 
    DataBind() 

    Dim rvDateFrom As RangeValidator = CType(lvRangeValidatorTest.Items(e.NewEditIndex).FindControl("rvDateFrom"), RangeValidator 
    rvDateFrom.MinimumValue = "01/01/1900" 
    rvDateFrom.MaximumValue = "01/01/2020" 
End Sub 

、として意図的に誤った名前を入力すると、オブジェクトエラーのインスタンスがスローされますが、実際にRangeValidatorを更新していないようです。したがって、最小値と最大値を空白のままにします。

思考?

多くのありがとうございます。

+0

)、日付は、YYYY/MM/DDなどの形式で指定する必要があります。 'rvDateFrom.MinimumValue =" 1900/01/01 "'を使うことができます。投稿への回答[RangeValidatorの日付形式](http://stackoverflow.com/questions/3332600/date-format-in-rangevalidator)も同じ情報を提供します。 – ConnorsFan

+0

ヘッドアップありがとうが、空白の値がタイプの日付に変換することはできませんが表示されます。 問題のないアプリケーションの他の領域でその日付形式を使用しました。 EditItemTemplateを使用するときに問題が発生します。 – Cuddles

+0

カルチャーはウェブアプリケーション内で指定されているので、カルチャーニュートラルな日付フォーマットを使用する必要はありません。 – Cuddles

答えて

0

さらに多くの調査を行い、ItemDataBoundイベントを使用しようとすると、DataBoundイベントが正常に使用されました。 【この記事(https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.rangevalidator.maximumvalue(V = vs.110)の.aspxで述べたよう

lvRangeValidatorTest_DataBound(sender As Object, e As EventArgs) Handles lvRangeValidatorTest.DataBound 
    If lvRangeValidatorTest.EditItem IsNot Nothing Then 
     Dim rvDateFrom As RangeValidator = CType(lvRangeValidator.EditItem.FindControl("rvDateFrom"), RangeValidator) 
     rvDateFrom.MinimumValue = "01/01/1900" 
     rvDateFrom.MaximumValue = "01/01/2020" 
    End If 
End Sub 
関連する問題