listbox的SelectedIndex属性始终返回-1值

时间:2017-09-02 06:21:39

标签: c# asp.net

有一个名为lbx_Marked的列表框,其中启用了autopostback和selectedIndexChanged方法。但无论我做什么,SelectedIndex值总是得到 STICK 为-1。

如何获取真实的SelectedIndex值?

以下是selectedIndex方法的代码。

protected void lbx_Marked_SelectedIndexChanged(object sender, EventArgs e)
    {
        string a;
        int b;
        b=lbx_Marked.SelectedIndex;
        if (lbx_Marked.SelectedIndex == -1)
        {
            a = " No Selection Made";
        }
    }

填充listBox的代码如下所示。

private void FillControls()
    {
        using (SqlConnection con = new SqlConnection(cs))
        {   
            int i;
            List<string> mylist = new List<string>();
            SqlDataAdapter da = new SqlDataAdapter("select Id,Empname,Designation from TblMstEmp", con);
            DataSet ds = new DataSet();
            da.Fill(ds, "entry");
            for(i=0;i<ds.Tables["entry"].Rows.Count;i++)
            {
                mylist.Add(string.Concat( Convert.ToString( ds.Tables["entry"].Rows[i]["Empname"]),"-",Convert.ToString(ds.Tables["entry"].Rows[i]["Designation"]))) ;
            }

            lbx_Marked.DataSource =mylist;
            lbx_Marked.DataBind();

        }
    }

1 个答案:

答案 0 :(得分:0)

我假设您使用的是WebForms。我刚刚创建了一个新的C#WebForms项目并添加了以下ListBox控件和Code Behind

<强> Default.aspx的

<asp:ListBox runat="server" ID="lbx_Marked" AutoPostBack="True" OnSelectedIndexChanged="lbx_Marked_SelectedIndexChanged" />

<强> Default.aspx.cs

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            lbx_Marked.Items.Add(new ListItem("Option 1", "1"));
            lbx_Marked.Items.Add(new ListItem("Option 2", "2"));
            lbx_Marked.Items.Add(new ListItem("Option 3", "3"));
        }
    }

    protected void lbx_Marked_SelectedIndexChanged(object sender, EventArgs e)
    {
        string a;
        int b;
        b = lbx_Marked.SelectedIndex;
        if (lbx_Marked.SelectedIndex == -1)
        {
            a = " No Selection Made";
        }
    }
} 

单击ListBox中的其他选项导致POST返回,SelectIndex始终反映ListItem的值

<强>已更新 我以与您指示的方式相同的方式添加数据,它仍然适用于我。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List<string> mylist = new List<string>();
            mylist.Add("Option 1");
            mylist.Add("Option 2");
            mylist.Add("Option 3");
            lbx_Marked.DataSource = mylist;
            lbx_Marked.DataBind();
        }
    }