2010-09-27 39 views
0

嘿所有,我需要一些幫助,試圖找出爲什麼這個下拉列表不選擇後,我選擇一個值。ASP.net下拉值幫助

這裏是ASP.net的下拉部分:

<div id="divItemsPerPage" runat="server" style="font-size:60%;font-weight:bolder;padding-right:15px;"> 
    Items per Page: 
     <asp:DropDownList ID="ddlPerPage" runat="server" AutoPostBack="true"> 
       <asp:ListItem Text="10" Value="10" /> 
       <asp:ListItem Text="25" Value="25" Selected="True" /> 
       <asp:ListItem Text="50" Value="50" /> 
       <asp:ListItem Text="100" Value="100" /> 
     </asp:DropDownList> 
</div> 

,這是我的代碼隱藏:

Private Sub ddlPerPage_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlPerPage.SelectedIndexChanged 
     'LoadFromViewstate() 
     _rowsPerPage = Convert.ToInt32(ddlPerPage.SelectedItem.Value) 
     gvData.PageIndex = 0 
     SaveRowsCountToCookie(_rowsPerPage) 
End Sub 

Public Property RowsPerPage() As Integer 
     Get 
      Return Utils.cleanInt(ddlPerPage.SelectedValue) 
     End Get 
     Set(ByVal value As Integer) 
      Dim itmX As New ListItem(value.ToString, value.ToString) 

      ddlPerPage.SelectedIndex = -1 
      If ddlPerPage.Items.Contains(itmX) Then 
       ddlPerPage.Items.FindByValue(value.ToString).Selected = True 
      Else 
       ddlPerPage.SelectedIndex = -1 
       For i As Integer = 0 To ddlPerPage.Items.Count - 1 
        If Utils.cleanInt(ddlPerPage.Items(i).Value) > value Then 
         ddlPerPage.Items.Insert(i, itmX) 
         ddlPerPage.SelectedIndex = i 
         Exit For 
        End If 
       Next 
      End If 
      _rowsPerPage = value 
      ViewState("RowsPerPage") = _rowsPerPage 
     End Set 
    End Property 

不管我選擇它仍具有相同的值,當頁開始。 _rowsPerPage =值似乎總是相同的。

UPDATE

好吧,看着它更緊密地似乎Convert.ToInt32(ddlPerPage.SelectedItem.Value)從來沒有正確的值當我選擇一個數字?

任何幫助將是偉大的! :O)

大衛

+0

你修改視圖狀態,或者把它關掉? – 2010-09-27 13:05:16

+0

這是什麼在** LoadFromViewstate **如果不是ViewState(「RowsPerPage」)是Nothing然後_rowsPerPage = CType(ViewState(「RowsPerPage」),整數),但我把它關閉測試沒有它,它似乎仍然留在一個價值。 – StealthRT 2010-09-27 13:09:52

+0

你調試了你的代碼嗎?可能是您的selectedindex方法被多次調用,因爲您再次在rowsperpage方法中設置索引。每次收到的價值是多少? – ibram 2010-09-27 13:42:03

回答

2

嘗試

_rowsPerPage = CInt(ddlPerPage.SelectedValue)

+0

謝謝,埃爾。似乎工作..:o) – StealthRT 2010-09-27 14:30:13

+0

不用擔心,謝謝你的剔! – 2010-09-27 14:33:41

1

定義_rowsPerPage變量作爲靜態這樣的:

private Shared _rowsPerPage as string 
+0

它不會允許我添加**靜態**。我已經把它變暗** Private _rowsPerPage As Integer = 10 ** – StealthRT 2010-09-27 13:29:00

+1

Shared是VB的等效靜態 – 2010-09-27 13:49:49

+0

謝謝,現在,它是正確的。 – mavera 2010-09-27 13:55:18

1

不知道這一點,但它可能是對的SelectedItem得到的SelectedIndex後更新。在這種情況下,你可能會想要做類似的東西:我想在vb.net)

使用ddlPerPage.Items[SelectedIndex].Value

而不是ddlPerPage.SelectedItem.Value

你應該使用(而不是[]。

+0

它告訴我,** SelectedIndex **沒有被聲明? – StealthRT 2010-09-27 13:39:06

+0

試過這個** CInt(ddlPerPage.Items(ddlPerPage.SelectedIndex).Value)**,但仍然不起作用。 – StealthRT 2010-09-27 13:41:13