有一个名为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();
}
}
答案 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();
}
}