无法更新ListView EditItemTemplate中包含的asp:RangeValidator

时间:2016-07-07 13:58:19

标签: asp.net vb.net

我正在努力获得一个asp:RangeValidator以编程方式更改最小值和最大值。不幸的是,我看到一个控制台错误消息说明:

'未捕获的Sys.WebForms.PageRequestManagerServerErrorException:Sys.WebForms.PageRequestManagerServerErrorException:值'' &rvDateFrom'的最大值属性无法转换为类型'日期'。

我的代码如下所示。日历包含在ListView的EditItemTemplate中,该ViewView包含在UpdatePanel中。

<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>

背后的代码如下:

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,因为故意输入错误的名称会抛出一个对象错误的实例,但它似乎并没有实际更新RangeValidator。因此,将最小值和最大值留空。

思想?

非常感谢。

1 个答案:

答案 0 :(得分:0)

经过一些研究并尝试使用ItemDataBound事件失败后,我成功使用了DataBound事件。

public Long test() {
    List<Long> returnList = new ArrayList<Long>();
    return returnList!=null&&!returnList.isEmpty()? returnList.get(0): 0;
}