2015-02-24 49 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那里。

相关问题