8月16日学习总结

       这几天一直在用Ajax实现添加一个简历的功能,由于不熟悉js和ajax,就这个页面做了3天和二个通宵,呵呵.以下是这几天的收获:

1.       如果想通过name获取控件,如: var comName = document.getElementsByName("txtComName");那么标识有runat="server"的控件,是获取不到值的. 在cs文件里,通过Request.Form("txtComName")也获取不到,去掉runat="server"就可以了.

       如果想通过id获取控件,如:var comName = document.getElementsById("txtComName");不管有没有runat="server"都能获取得到.

2.    在cs文件里,通过Request.Form("txtComName")可以获取所有name是txtComName文本框的值,多个文本框的值是用","连接的.

3.       给Select添加下拉值

 function FillMonth(aa_month) 
{
     for(var j=0; j<aa_month.length;j++)
    {
        for(var i=1;i<13;i++)
        {
              var oOption    = document.createElement("option");
              oOption.text  = i;
              oOption.value = i;
              aa_month[j].add(oOption);
        }
    }
}

4.点击按钮添加同样一个<div>的内容,这样写
 function  addTextBox()
    {
        var txt = " <div><input type=/"text/" name=/"txt1/" /><select name=/"Select1/"></select></select>";
        txt = txt+ "</div>";
         var obj  = document.getElementById("divEdu");
         var html = obj.innerHTML;
      obj.innerHTML = html + txt;
        
    }
   
5.  txt = "<select name=/"Select1/">";给name加个变量,txt就得这样写txt = "<select name=/"Select1" + num + "/">";

6.  想实现这样的功能:在服务端点击按钮,插入数据后,在客户端得到返回最新的Id.(页面的上半部分在服务端运行,下半部分在客户端运行).
     在Button事件里这样写,可以将服务端的值传到客户端,调用客户端的方法 Page.ClientScript.RegisterStartupScript( typeof( string ), "aa", "provinceSelect('" + strProvince + "','" + strCity + "');", true );
在客户端可以得到最新Id的,但是下半部分的客户端数据就丢失了.
     如果不写在button事件里,在一个服务端的方法里写,但又得不到在DataList中CheckBox选中的值
     两种解决方案:
     第一种:全在服务端得到数据,用Request.Form();另一种就全在客户端得到数据,用js.
     我选择在客户端得到数据.但又有了新的问题:DataList运行后的Html代码是这样的:(只有checkBox控件,数据绑定在Text上)<label for=ma__chk>aaaa</label><input id="ma__chk" type="checkbox" name="ma$chk" />
想了很多办法,可以用innerText得到"aaaa",但无法将label的for跟input的Id联系起来.后来在DataList里用label加checkBox的方式,运行后的html代码就变成这样了:<span id="ma_labMa">挖掘机</span><input id="ma_chkMa" type="checkbox" name="mac$chkMa" />
这样就能得到span的Id和input的id,并且还能联系起来,整个代码如下(先得到Table,再得到Tr,Td,span,input):
 
 var mylist=document.getElementById("machineList");
 var machine = "";
        for (i=0; i<mylist.childNodes.length; i++)
        {
           var tr=mylist.childNodes[i];              //得到TR

           for(j=0;j<tr.childNodes.length; j++)
           {       
              var td=tr.childNodes[j];              //得到TD

              for(x=0;x<td.childNodes.length;x++)
              {
                   var ss = td.childNodes[x];
                   var count = 0;
                   for(y=0;y<ss.childNodes.length;y++)
                   {
                        count++;
                        if(count==1)
                        {
                            var spanMa = ss.childNodes[1].id;    //得到span的ID
                            var index = spanMa.lastIndexOf("_");
                            var span_id = spanMa.substring(0,index);
                            var checkMa = ss.childNodes[3].id;  //得到input的ID
                            var indexCh = checkMa.lastIndexOf("_");
                            var check_id = checkMa.substring(0,indexCh);
                            if(span_id == check_id)
                            {
                                if(ss.childNodes[3].checked)   //如果相等并且checkBox被选中
                                {
                                    machine= machine + ss.childNodes[1].innerText + ",";
                                }
                            }
                        }
                    }
                 }

              }
           
           }

7. 页面中的年月没有用日历控件,用的是数组绑定的.开始日期,就有两个同样的年和月.刚开始时,我把所以的年和月的name都命名为select1和select2,这样
只有一个工作经历时,没问题,但添加多个以后,年月的下拉列表就出现了很多重复的.只好改成select1+num这样的形式了.
代码如下:
           var beginDate;
     var endDate;
           if(i==0)
           {
               year = document.getElementsByName("select2");
               month = document.getElementsByName("select3");
           }
           else
           {
                year = document.getElementsByName("select2"+num);
                month = document.getElementsByName("select3"+num);
           }   
                //年份
     var year_index;
     //第一个select2
     year_index = year[0];
     for(var j = 0; j<year_index.length;j++)
                   {
                      //开始年份
                        if(year_index.options[j].selected)
                       {
                             beginDate = year_index.options[j].text;
                       }
                   }
      
       //第二个select2
       year_index = year[1];
     for(var j = 0; j<year_index.length;j++)
                   {
                      //结束年份
                        if(year_index.options[j].selected)
                       {
                             endDate = year_index.options[j].text;
                       }
                   }
                  
                   //月份
                    var month_index;
     //第一个select3
     month_index = month[0];
     for(var j = 0; j<month_index.length;j++)
                   {
                      //开始月份
                        if(month_index.options[j].selected)
                       {
                              beginDate = beginDate + "-" + month_index.options[j].text;
                       }
                   }
      
       //第二个select3
       month_index = month[1];
     for(var j = 0; j<month_index.length;j++)
                   {
                      //结束月份
                        if(month_index.options[j].selected)
                       {
                             endDate = endDate + "-" + month_index.options[j].text;
                       }
                   }

8.客户端调用服务端的方法
pageLoad:  Ajax.Utility.RegisterTypeForAjax( typeof( Admin_Admin_AddResume ) );
html:  Admin_Admin_AddResume.addValue(strApply,strEdu,strJob);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

orangapple

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值