首页蓝耳朵|小小蓝耳朵广州图书馆外文室英语儿童读物资源介绍网佛教青年之友旧版收集永硕E盘Phonics Short Vowels Game 
input+select输入汉字或拼音快速选择数据第6步 修改用户控件
所属栏目:ASP.NET(webform)  时间:2010-12-01 15:03  作者:狼子

今天测试两个控件在数据控件里的使用情况,发现了一些问题,一一修改,修改原因就是注释上写的了

现在还有问题:

1.小燕子测试到有些汉字取拼音不正确,“妞”的拼音取成了“zuo”

2.还是select的选择问题,如果只是单击鼠标选择一项,没问题,就是,如果想要用鼠标拉着select的滚动条往后浏览数据后再选择,鼠标只要一点到select,我就默认选择第一项了。。。我不知道怎么判断鼠标点在选项上还是点在滚动条上,如果我在最开始不设置默认选项,这里可以利用selectedIndex属性吗?

先记录今天的。。。

PhonicsSelect.ascx.cs

protected void Page_Load(object sender, EventArgs e)
    {
        //不判断IsPostBack,是因为如果放在数据控件里,判断了这个后,数据控件重新绑定时,不会写入脚本
        if (String.IsNullOrEmpty(LtPhonics.Text))
        {
            IniPhonicsArray();
        }
    }

PhonicsInput.ascx.cs,这个改动比较多,因为原来我只是循环了Parent.Controls,这是个bug,如果我把控件放在不同的服务器端容器里,像数据控件、Panel、MultiView等等一堆的这些容器里,当前用户控件的Parent.Controls,就只能取到当前用户控件了,所以我改成了用递归的方式,整个页面搜索

#region 设置Js脚本
    protected void Page_Load(object sender, EventArgs e)
    {
        //不判断IsPostBack,是因为如果放在数据控件里,判断了这个后,数据控件重新绑定时,不会写入脚本
        if (String.IsNullOrEmpty(LtAssignment.Text))
        {
            SetPhonicsJs();
        }
    }
    private void SetPhonicsJs()
    {
        int inputIndex = -1;

        //递归检索整个页面中的所有控件,给每一个当前的PhonicsInput控件添加脚本
        WriteJs(Page.Controls, ref inputIndex);
    }
    private void WriteJs(ControlCollection ctrls, ref int inputIndex)
    {
        foreach (Control c in ctrls)
        {
            if (!c.HasControls()) continue;

            if (c is PhonicsInput)
            {
                inputIndex++;
                if (c.ID != this.ID) continue;

                if (inputIndex == 0)
                {
                    //页面中的第一个input控件,声明数组
                    LtDeclareArray.Text = "<script type=\"text/javascript\">var wordInputArray = new Array(); var wordValueArray = new Array();</script>";
                }
                //赋值
                LtAssignment.Text = String.Format("<script type=\"text/javascript\">wordInputArray[{0}] = document.getElementById(\"{1}\"); wordValueArray[{0}] = document.getElementById(\"{2}\");</script>", inputIndex.ToString(), TbWord.ClientID, HfWord.ClientID);
            }
            else
            {
                WriteJs(c.Controls, ref inputIndex);
            }
        }
    }
    #endregion

 

小楼宝宝的涂鸦花花(Imitater)的博客起名称骨测字