2015-02-24 46 views
1

我使用列表框來查看我的數據庫的一些記錄作爲字符串。但現在有兩個不同的問題: 1.選擇更改不會通過雙擊或單擊進行調用,它僅在您選擇某個項目並按下返回時調用。 2.即使當選擇發生變化時,selectedIndex返回-1,所選值爲null。 ASP代碼:如何在asp中的列表框中獲取選定的項目?

<form runat="server"> 
    <div class="clearfix"> 
     <asp:ListBox runat="server" ID="g1SeasonsListView" CssClass="adminSeasonsListView" OnSelectedIndexChanged="g1SeasonsListView_SelectedIndexChanged" /> 
     <asp:ListBox runat="server" ID="g2SeasonsListView" CssClass="adminSeasonsListView" /> 
     <asp:ListBox runat="server" ID="g3SeasonsListView" CssClass="adminSeasonsListView" /> 
    </div> 
    <div class="clearfix"> 
     <asp:Button ID="g1DeleteBtn" Text="Delete" runat="server" OnClick="g1DeleteBtn_Click" CssClass="adminDeleteBtn" /> 
     <asp:Button ID="g2DeleteBtn" Text="Delete" runat="server" OnClick="g2DeleteBtn_Click" CssClass="adminDeleteBtn" /> 
     <asp:Button ID="g3DeleteBtn" Text="Delete" runat="server" OnClick="g3DeleteBtn_Click" CssClass="adminDeleteBtn" /> 
    </div> 
</form> 

和CS代碼,我通過在VS2013監視窗口中檢查並沒有什麼特別的變量:

protected void g1DeleteBtn_Click(object sender, EventArgs e) 
{  
} 
protected void g2DeleteBtn_Click(object sender, EventArgs e) 
{ 
} 
protected void g3DeleteBtn_Click(object sender, EventArgs e) 
{  
} 
protected void g1SeasonsListView_SelectedIndexChanged(object sender, EventArgs e) 
{  
} 

,當我想更新列表框使用:

private void UpdateListeView() 
{ 
    List<string> seasonsListTemp = null; 

    g1SeasonsListView.Items.Clear(); 
    seasonsListTemp = (from s in database.Gs where s.grade == 1 select s.season).ToList(); 
    for (int i = 0; i < seasonsListTemp.Count; i++) 
     g1SeasonsListView.Items.Add(seasonsListTemp[i]); 

    g2SeasonsListView.Items.Clear(); 
    seasonsListTemp = (from s in database.Gs where s.grade == 2 select s.season).ToList(); 
    for (int i = 0; i < seasonsListTemp.Count; i++) 
     g2SeasonsListView.Items.Add(seasonsListTemp[i]); 

    g3SeasonsListView.Items.Clear(); 
    seasonsListTemp = (from s in database.Gs where s.grade == 3 select s.season).ToList(); 
    for (int i = 0; i < seasonsListTemp.Count; i++) 
     g3SeasonsListView.Items.Add(seasonsListTemp[i]); 
} 

我甚至試圖在按下刪除按鈕時得到選定的索引,但結果是一樣的。

+0

檢查你是否綁定了ListView!Postback block – Adil 2015-02-24 10:13:13

+0

:D whats that?!! 這是我所有的代碼,我是新的ASP – 2015-02-24 10:14:43

+0

如何綁定列表框? – Adil 2015-02-24 10:15:55

回答

0

將您的代碼綁定到!Page.IsPostBack塊中。確保代碼不會在回發中執行。如果綁定在回發ListView控件你會鬆動所有包含該事件在GridView的狀態被觸發,SelectedIndex的等

Page.IsPostBack Property

獲取一個值,該值指示頁面是否被渲染爲 第一次或正在加載迴應的迴應。

if(!Page.IsPostBack) 
{ 
    UpdateListeView(); 
} 

通常控制在Page_Load方法綁定的,你可能需要檢查Page.IsPostBack那裏。

相關問題