哼哼哈嘿-关于ListBox和DropDownList

来源:互联网 发布:世界银行预测数据 编辑:程序博客网 时间:2024/04/30 10:13

这是刘宁童鞋发现的问题,我以前从未注意过,经过共同努力,终于搞定。

我们一般使用下面这种方式,未这两个控件赋值:

        this.ListBox1.Items.Add(new ListItem("哈哈", "1"));        this.ListBox1.Items.Add(new ListItem("哼哼", "1"));        this.ListBox1.Items.Add(new ListItem("嘿嘿", "1"));

大家注意这个ListItem类在实例化时,需要两个参数,一个是text值,一个是value值。当这几项的value值相同或者都为空时就会出现问题,先看界面布局:

 

 

 

 

 

 

然后上代码:

public partial class _Default : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        if (!IsPostBack)        {            GetValue();        }    }    private void GetValue()    {        this.ListBox1.Items.Add(new ListItem("哈哈", "1"));        this.ListBox1.Items.Add(new ListItem("哼哼", "1"));        this.ListBox1.Items.Add(new ListItem("嘿嘿", "1"));            }        protected void Button1_Click(object sender, EventArgs e)    {        ClientScript.RegisterStartupScript(GetType(), "dd", "<script>alert('" + this.ListBox1.SelectedItem.Text + "')</script>", false);    }}

上面程序的功能就是在页面加载时为ListBox控件加载三项“哼哼”,“哈哈”,“嘿嘿”。单击按钮显示我们选中的项目,比如,选中“哈哈”,执行结果如图:

 

再选中“哼哼”,执行结果如下图:


问题出来了,无论你选择任意一项,单击按钮后,选中和显示的都会事第一项“哈哈”。这是为什么呢?

经过我们的努力,终于搞明白了,用户点击按钮,回传到服务器,程序会分析用户选中的是第几项,而程序是如何判断用户选中的项目呢?事实上是根据项目的索引,而如何判断项目的索引呢,事实上是根据每一项的value值。OK,如我们上面那样,所有的VALUE值都一样,那么程序就会认为用户选中的为第一项。这个道理也适用于value值为空字符串的情况下。

虽然我上面一直使用“事实上”,但是这也只是我们的猜测而已。但是我想,离真相已经不远了。

 

 

 


 

原创粉丝点击