2010-07-02 78 views
1

我繼承了一個正在更新的站點,其中有一個DropDownListRangeValidator分配給它。數據綁定到Page_Load上的下拉列表中。從數據庫中檢索值,以便將每個項目的值屬性設置爲數據庫中項目的唯一ID。RangeValidator在使用jQuery選擇DropDownList值時不起作用

的RangeValidator控件看起來像:

<asp:rangevalidator id="ddRangeValidator" runat="server" ControlToValidate="ddMenu" ErrorMessage="Please select value in range" MinimumValue="1" MaximumValue="100000" Type="Integer">*</asp:rangevalidator> 

我有自動填充jQuery中例如該值的方法

$("#ddMenu").val("An Option"); 

但是,這工作,當我嘗試發佈頁面範圍驗證失敗。然後,即使我手動選擇該值,或者選擇另一個有效值,它仍然不會驗證。使其驗證的唯一方法是選擇無效值,然後重新選擇有效的值。

任何想法?

更新

下面是數據綁定代碼:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load, Me.Load 

    If Not Page.IsPostBack Then 
     Dim ds As New DataSet() 
     Dim myDbObject As New myDbObject() 
     ds = myDbObject.ToDataSet() // retrieves all objects from the database 

     // store the results in a temporary view to filter 
     Dim dv As DataView 
     dv = New DataView(ds.Tables(0), "IsLive = True", "ID", DataViewRowState.CurrentRows) 

     Dim i As Integer = 0 
     ddMenu.Items.Add("Select a value") 
     ddMenu.Items.Item(0).Value = 0 

     // add all objects from filtered list into drop down menu 
     For i = 0 To dv.Count - 1 
      With ddMenu.Items 
       // add a new item 
       .Add(dv.Item(i).Item("Name")) 
       // set the Value property as unique ID of object 
       .Item(i + 1).Value = dv.Item(i).Item("ID") 
      End With 
     Next 
    End If 

End If 
+0

你的意思是「......範圍驗證失敗」。它是否會在錯誤信息中失敗,或者它在實際應用中無法評估和顯示任何內容? – Juri 2010-07-02 10:52:37

+0

@Juri,對不起,我應該更清楚。下拉菜單中的值未通過驗證,即控件正在驗證中,只是不正確。 – James 2010-07-02 11:56:29

回答

1

原來,這是我的頁面加載兩次的問題......所以現在的問題是要追查爲什麼它加載兩次!

0

我猜範圍驗證驗證下拉列表中的實際「價值」。可能有可能通過使用jQuery來填充你的下拉菜單,實際的輸入沒有得到一個合適的選項「價值」?你可能會發布你的下拉列表的HTML代碼?

+0

我沒有使用jQuery來填充DropDownList,我使用jQuery自動選擇一個值。 DropDownList綁定到Page_Load的代碼隱藏頁面中的DropDownList。價值肯定是被設定的。無論如何,我會發布代碼供您查看。 – James 2010-07-02 11:59:17