Ajax無刷新的獲取數據綁定GridView及無刷新更新數據

首先是獲得數據並綁定好GridView
客戶端javascript代碼:

 

 1        function GetPersonnelKPIStep()
 2        {            
 3                      
 4            var sId=GetParam("c_id");
 5            
 6            document.getElementById("hId").value=sId;
 7            
 8            var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP"); 
 9            xmlhttp.Open("post","FmPersonnelKPIData.aspx?MethodName=GetPersonnelKPIStep&c_id="+sId+"&c_sort=",false);
10            xmlhttp.Send();
11            var sGridContent=xmlhttp.responseText;    
12             
13            var iStart=sGridContent.indexOf("<table");
14            var iEnd=sGridContent.indexOf("</table>");            
15            document.getElementById("divStep").innerHTML= sGridContent.substring(iStart,iEnd+8);            
16        } 

因爲GirdView最後會翻譯成Table在瀏覽器上顯示,所以我只要獲得返回流中的Table並將其賦給div的innerHTML屬性即可

服務端代碼:
1protected void Page_Load(object sender, EventArgs e)
2    {
3        if (!IsPostBack)
4        {
5            if (sMethodName == "GetPersonnelKPIStep")
6            {
7                GetPersonnelKPIStep(sId, Request.QueryString["c_sort"].ToString()); 
8            }
9     }
 1    public void GetPersonnelKPIStep(string sId, string sSort)
 2    {
 3        CWSHr cwsHr = new CWSHr();
 4        _DateNum = cwsHr.GetPersonnelKPIDateNum(sId);
 5        _kpiDatetime = cwsHr.GetPersonnelKPIDateTime(sId);
 6        if (_kpiDatetime == null &#124;&#124; _kpiDatetime.Length != 2)
 7            return;
 8
 9        _StartDate = Convert.ToDateTime(_kpiDatetime[0]);
10
11        DataSet ds= cwsHr.GetPersonnelKPIStep(sId,sSort);
12        GV_Step.DataSource = ds.Tables[0].DefaultView;
13        GV_Step.DataBind();
14    }

在服務端獲得並綁定數據到GridView

獲得xml格式的數據:
服務端代碼:
    public void GetPersonnelKPIStepOne(string sId, string sSort)
    {
        CWSHr cwsHr = new CWSHr();
        DataSet ds = cwsHr.GetPersonnelKPIStep(sId, sSort);
        Response.Write(ds.GetXml());
        Response.End();
    }
注意,Response.End()一定要加上

客戶端代碼:
 1var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP"); 
 2            xmlhttp.Open("post","FmPersonnelKPIData.aspx?MethodName=GetPersonnelKPIStepOne&c_id="+sId+"&c_sort="+sSort,false);
 3            xmlhttp.Send();
 4            var sGridContent=xmlhttp.responseText;    
 5                    
 6            //alert(sGridContent);     
 7            var xmlDom=new ActiveXObject("MSXML2.DOMDocument");
 8            xmlDom.loadXML(xmlhttp.responseText);
 9            var nodes=xmlDom.selectSingleNode("//NewDataSet/Table").childNodes;
10            if (nodes != null)
11            {
12                for (var i=0;i<nodes.length;i++)
13                {                    
14                    if (nodes[i].nodeName=="c_sort")
15                        document.getElementById("ETBSort").value=nodes[i].text;
16                    else if (nodes[i].nodeName=="c_type")
17                        document.getElementById("ETBType").value=nodes[i].text;
18                    else if (nodes[i].nodeName=="c_item")
19                        document.getElementById("ETBKpi").value=nodes[i].text;
20                    else if (nodes[i].nodeName=="c_st_dt")
21                        document.getElementById("ETB_StDt").value=nodes[i].text.substring(0,nodes[i].text.indexOf("T"));
22                    else if (nodes[i].nodeName=="c_en_dt")
23                        document.getElementById("ETB_EnDt").value=nodes[i].text.substring(0,nodes[i].text.indexOf("T"));
24                    else if (nodes[i].nodeName=="c_st_dt_fact")
25                        document.getElementById("ETB_StFDt").value=nodes[i].text.substring(0,nodes[i].text.indexOf("T"));
26                    else if (nodes[i].nodeName=="c_en_dt_fact")
27                        document.getElementById("ETB_EnFDt").value=nodes[i].text.substring(0,nodes[i].text.indexOf("T"));
28                    else if (nodes[i].nodeName=="c_result")
29                        document.getElementById("ETBFact").value=nodes[i].text;
30                    else if (nodes[i].nodeName=="c_propotion")
31                        document.getElementById("ETBPropotion").value=nodes[i].text;
32                    else if (nodes[i].nodeName=="c_score")
33                        document.getElementById("ETBScore").value=nodes[i].text;
34                       
35                }
36            }
注意以上獲取時間中日期部分的處理

無刷新更新數據:
 1                var xmldoc = new ActiveXObject("MSXML2.DOMDocument");            
 2                var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");                                     
 3                xmldoc.loadXML("");
 4                
 5                newNode1 = xmldoc.createElement("NewDataSet");
 6                xmldoc.appendChild(newNode1);
 7                newNode2 = xmldoc.createElement("tb_o_k_task");
 8                newNode1.appendChild(newNode2);
 9                                
10                newNode = xmldoc.createElement("c_id");
11                newNode.text = document.getElementById(''hId'').value;
12                newNode2.appendChild(newNode);
13                
14                newNode = xmldoc.createElement("c_sort");
15                newNode.text = document.getElementById(''ETBSort'').value;
16                newNode2.appendChild(newNode);
17                
18                newNode = xmldoc.createElement("c_item");
19                newNode.text = document.getElementById(''ETBKpi'').value;
20                newNode2.appendChild(newNode);
21                
22                newNode = xmldoc.createElement("c_type");
23                newNode.text = document.getElementById(''ETBType'').value;
24                newNode2.appendChild(newNode);
25
26                newNode = xmldoc.createElement("c_st_dt");
27                newNode.text = document.getElementById(''ETB_StDt'').value;
28                newNode2.appendChild(newNode);
29                
30                newNode = xmldoc.createElement("c_en_dt");
31                newNode.text = document.getElementById(''ETB_EnDt'').value;
32                newNode2.appendChild(newNode);
33                
34                newNode = xmldoc.createElement("c_st_dt_fact");
35                newNode.text = document.getElementById(''ETB_StFDt'').value;
36                newNode2.appendChild(newNode);
37                
38                newNode = xmldoc.createElement("c_en_dt_fact");
39                newNode.text = document.getElementById(''ETB_EnFDt'').value;
40                newNode2.appendChild(newNode);
41                
42                newNode = xmldoc.createElement("c_propotion");
43                newNode.text = document.getElementById(''ETBPropotion'').value;
44                newNode2.appendChild(newNode);
45                
46                newNode = xmldoc.createElement("c_result");
47                newNode.text = document.getElementById(''ETBFact'').value;
48                newNode2.appendChild(newNode);
49                
50                newNode = xmldoc.createElement("c_score");
51                newNode.text = document.getElementById(''ETBScore'').value;
52                newNode2.appendChild(newNode);
53                
54                xmlhttp.Open("post", "FmPersonnelKPIData.aspx?MethodName=SavePersonnelKPIStep"+"&sAct="+escape(sAct), false);     
55                xmlhttp.setRequestHeader("Content-Type","text/xml");                                
56                xmlhttp.send(xmldoc.xml); 
57
首先將要更新的數據構造成一個xml對象,再將這個xml對象做爲xmlhttp.send()的參數傳給服務端

服務端代碼:
 1public void SavePersonnelKPIStep(string sAct)
 2    {
 3        System.IO.Stream instream = Page.Request.InputStream;
 4        BinaryReader br = new BinaryReader(instream, System.Text.Encoding.UTF8);
 5        byte[] byt = br.ReadBytes((int)instream.Length);
 6        string sXml = System.Text.Encoding.UTF8.GetString(byt);
 7
 8        System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
 9        xmlDoc.LoadXml(sXml);
10
11        string sid = xmlDoc.SelectSingleNode("//NewDataSet/tb_o_k_task/c_id").InnerText;
12        string ssort = xmlDoc.SelectSingleNode("//NewDataSet/tb_o_k_task/c_sort").InnerText;
13        string sitem = xmlDoc.SelectSingleNode("//NewDataSet/tb_o_k_task/c_item").InnerText;
14        string stype = xmlDoc.SelectSingleNode("//NewDataSet/tb_o_k_task/c_type").InnerText;
15        string sstdt = xmlDoc.SelectSingleNode("//NewDataSet/tb_o_k_task/c_st_dt").InnerText;
16        string sendt = xmlDoc.SelectSingleNode("//NewDataSet/tb_o_k_task/c_en_dt").InnerText;
17        string sstfdt = xmlDoc.SelectSingleNode("//NewDataSet/tb_o_k_task/c_st_dt_fact").InnerText;
18        string senfdt = xmlDoc.SelectSingleNode("//NewDataSet/tb_o_k_task/c_en_dt_fact").InnerText;
19        string spropotion = xmlDoc.SelectSingleNode("//NewDataSet/tb_o_k_task/c_propotion").InnerText;
20        string sresult = xmlDoc.SelectSingleNode("//NewDataSet/tb_o_k_task/c_result").InnerText;
21        string sScore = xmlDoc.SelectSingleNode("//NewDataSet/tb_o_k_task/c_score").InnerText;
22
23        spropotion = (spropotion == "" ? "1" : spropotion);
24
25        CWSHr cwsHr = new CWSHr();
26
27        if (sAct == "修改")
28        {
29            string soldsort = xmlDoc.SelectSingleNode("//NewDataSet/tb_o_k_task/c_oldsort").InnerText;
30            cwsHr.UpdatePersonnelKPIStep(sid, soldsort, ssort, sitem, stype, sstdt,sendt,sstfdt,senfdt, spropotion, sresult,sScore);
31        }
32        else if (sAct == "新增")
33        {
34            cwsHr.SaveNewPersonnelKPIStep(sid, ssort, sitem, stype, sstdt, sendt, sstfdt, senfdt, spropotion, sresult);
35        }
36
37    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章