日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 充電吧
[導(dǎo)讀] 先看一下我要實(shí)現(xiàn)的功能界面: 這個(gè)界面的功能在圖中已有展現(xiàn),課程分配(教師教授哪門課程)在之前的頁(yè)面中已做好。這個(gè)頁(yè)面主要實(shí)現(xiàn)的是授課,即給老師教授的課程分配學(xué)生。此頁(yè)面實(shí)現(xiàn)功能的步驟已

先看一下我要實(shí)現(xiàn)的功能界面:


這個(gè)界面的功能在圖中已有展現(xiàn),課程分配(教師教授哪門課程)在之前的頁(yè)面中已做好。這個(gè)頁(yè)面主要實(shí)現(xiàn)的是授課,即給老師教授的課程分配學(xué)生。此頁(yè)面實(shí)現(xiàn)功能的步驟已在頁(yè)面中有所體現(xiàn),這里不再贅述,此篇文章主要介紹:我是如何通過(guò)js從前臺(tái)獲取數(shù)據(jù),然后通過(guò)ajax技術(shù)向后臺(tái)一般處理程序傳遞JSON,后臺(tái)又是如何獲取傳來(lái)的JSON,并對(duì)JSON數(shù)據(jù)轉(zhuǎn)換,然后將轉(zhuǎn)換后的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)的!


介紹這些步驟實(shí)現(xiàn)前,先說(shuō)說(shuō)自己的辛酸:絮叨辛酸,是因?yàn)闉榱藢?shí)現(xiàn)這個(gè)功能,我真的用了很長(zhǎng)時(shí)間!為了讓用戶看著舒服點(diǎn),這個(gè)頁(yè)面的實(shí)現(xiàn)我寫了700多行的JS代碼和9個(gè)一般處理程序!為了避免頁(yè)面刷新影響效果,又不想使用VS自帶的UpdatePanel AJAX控件,感覺(jué)這個(gè)控件會(huì)帶來(lái)不少后患,所以這個(gè)頁(yè)面的實(shí)現(xiàn)我使用了大量JS代碼。從后臺(tái)一般處理程序向前臺(tái)傳遞JSON,前臺(tái)解析JSON并顯示在界面,這樣的實(shí)現(xiàn)網(wǎng)上例子很多,非常容易實(shí)現(xiàn),我也寫了一篇博客來(lái)記錄自己的成長(zhǎng),見(jiàn)《《項(xiàng)目經(jīng)驗(yàn)》--后臺(tái)一般處理程序向前臺(tái)JS文件傳遞JSON,JS解析JSON,將數(shù)據(jù)顯示在界面--顯示在DropDownList 或 顯示在動(dòng)態(tài)創(chuàng)建的table中》;而從前臺(tái)向后臺(tái)傳遞JSON用法,卻讓我費(fèi)盡周折,最終也沒(méi)找到一個(gè)完整的實(shí)例,但最后將問(wèn)題分成幾個(gè)步驟,然后一步步解決了!

下面分享下我的經(jīng)驗(yàn),希望對(duì)用到此功能的戰(zhàn)友有所幫助,當(dāng)然我這樣實(shí)現(xiàn)有什么缺陷,還希望得到高人指點(diǎn)!


1.界面層添加信息列表部分html代碼

[html]view plaincopy print?

添加信息列表

教師名: <%--隱藏控件,保存教師id--%> 課程名: <%--隱藏控件,保存課程id--%> <%--隱藏控件,保存教師、課程關(guān)系indexing--%> 選擇上課班: <%----%> 已選授課人數(shù) 學(xué)生姓名列表

<%----%>


選擇完學(xué)年學(xué)期、教師、課程、學(xué)生后,點(diǎn)擊"確認(rèn)添加"按鈕,執(zhí)行"添加授課信息"事件!


2.通過(guò)JS獲取前臺(tái)授課數(shù)據(jù),并向后臺(tái)一般處理程序傳遞

[javascript]view plaincopy print? //*******************************************授課點(diǎn)擊事件******************************************// //添加授課信息 functionAddTeachCourse(){ //取得教師ID varstrTeacherID=$("#hidFieldSaveTeacherID").val(); //alert("教師ID="+txtTeacherID); //取得課程ID varstrCourseID=$("#hidFieldSaveCourseID").val(); //alert("課程ID="+txtCourseID); //取得上課班ID varstrTeachClassID=document.getElementById("ddlTeachClass"); varTeachClassID=strTeachClassID.options[strTeachClassID.selectedIndex].value;//得到ID //取得課程分配的ID(Indexing) varIndexing=$("#hidFieldSaveIndexing").val(); //取得學(xué)生數(shù)量 varstuNum=$("#txtStuNum").val(); //取得listbox框ID varlistStudent=document.getElementById("lsboxStudent"); //取得listbox框中元素長(zhǎng)度 varlstStuLength=listStudent.options.length; //varobjJsons=""; //varStuArrayObj=newArray();//創(chuàng)建一個(gè)數(shù)組,存儲(chǔ)學(xué)生ID //StuArrayObj[i]=StudentID;//向數(shù)組中添加學(xué)生ID //*******************以下是:轉(zhuǎn)換json對(duì)象的過(guò)程*************************// varStuArrayObjs=[];//定義一個(gè)空串 for(vari=0;i 以上有幾個(gè)需要注意的地方:

2.1.轉(zhuǎn)換JSON串使用

[javascript]view plaincopy print? JSON.stringify()

2.2.JS向一般處理程序傳遞JSON使用

[javascript]view plaincopy print? //與AJAX交互,向一般處理程序傳遞json字符串?dāng)?shù)組,并返回結(jié)果 $.post("要使用的一般處理程序路徑",{TeachCourseJson:TeachCourseJsonString},function(data){ alert(data); });

3.一般處理程序解析JS傳遞過(guò)來(lái)的Json數(shù)據(jù),并進(jìn)行解析,寫入DataTable中,然后寫入數(shù)據(jù)庫(kù)

[csharp]view plaincopy print? <%@WebHandlerLanguage="C#"Class="AddTeachCourse"%> /******************************************************************************* *文件:AddTeachCourse.ashx *作者:mzj *所屬小組:評(píng)教小組 *文件說(shuō)明:添加授課信息 *創(chuàng)建日期:2013年2月6日17:57:01 *修改作者: *修改日期: *修改描述: *版本號(hào):V1.0 *版本號(hào)變更記錄: ********************************************************************************/ usingSystem; usingSystem.Web; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Data; //json使用命名空間 usingNewtonsoft.Json; usingNewtonsoft.Json.Linq; usingNewtonsoft.Json.Converters; usingSystem.IO; usingSystem.Text; usingTeachSystem.BLL.TeachingBLL; usingTeachSystem.Entity.TeachingEntity; publicclassAddTeachCourse:IHttpHandler { publicvoidProcessRequest(HttpContextcontext) { context.Response.ContentType="text/plain"; //創(chuàng)建一個(gè)名為ds_StuTeacherCourse的DataSet //(用于存放表:學(xué)生、教師、課程關(guān)系表,學(xué)生、上課班關(guān)系表,課程分配上課班關(guān)系表) DataSetdsStuTeacherCourse=newDataSet("ds_StuTeacherCourse"); //手動(dòng)創(chuàng)建的新數(shù)據(jù)表-學(xué)生、教師、課程關(guān)系數(shù)據(jù)表 DataTabledtAddStudentTeaherCourse=newDataTable("dt_AddStudentTeaherCourse");//創(chuàng)建一個(gè)名為dt_AddStudentTeaherCourse的DataTalbe //為dt_AddStudentTeaherCourse表內(nèi)建立Column(表頭),添加數(shù)據(jù)列:StudentID,Indexing,IsAvailable dtAddStudentTeaherCourse.Columns.Add(newDataColumn("StudentID",typeof(string))); dtAddStudentTeaherCourse.Columns.Add(newDataColumn("Indexing",typeof(int))); dtAddStudentTeaherCourse.Columns.Add(newDataColumn("IsAvailable",typeof(string))); //手動(dòng)創(chuàng)建的新數(shù)據(jù)表-學(xué)生、上課班關(guān)系數(shù)據(jù)表 DataTabledtAddStudentTeachClass=newDataTable("dt_AddStudentTeachClass");//創(chuàng)建一個(gè)名為dt_AddStudentTeachClass的DataTalbe //為dt_AddStudentTeachClass表內(nèi)建立Column(表頭),添加數(shù)據(jù)列:StudentID,TeachClassID,IsAvailable dtAddStudentTeachClass.Columns.Add(newDataColumn("StudentID",typeof(string))); dtAddStudentTeachClass.Columns.Add(newDataColumn("TeachClassID",typeof(string))); dtAddStudentTeachClass.Columns.Add(newDataColumn("IsAvailable",typeof(string))); //手動(dòng)創(chuàng)建的新數(shù)據(jù)表-課程分配、上課班關(guān)系數(shù)據(jù)表 DataTabledtAddCourseTeachClass=newDataTable("dt_AddCourseTeachClass");//創(chuàng)建一個(gè)名為dt_AddStudentTeachClass的DataTalbe //為dt_AddCourseTeachClass表內(nèi)建立Column(表頭),添加數(shù)據(jù)列:TeachClassID,Indexing,IsAvailable dtAddCourseTeachClass.Columns.Add(newDataColumn("TeachClassID",typeof(string))); dtAddCourseTeachClass.Columns.Add(newDataColumn("Indexing",typeof(int))); dtAddCourseTeachClass.Columns.Add(newDataColumn("IsAvailable",typeof(string))); dtAddCourseTeachClass.Columns.Add(newDataColumn("OddEven",typeof(string))); dtAddCourseTeachClass.Columns.Add(newDataColumn("StuNum",typeof(int))); //獲取前臺(tái)傳遞過(guò)來(lái)的授課JSON字符串?dāng)?shù)組 stringss=context.Request.Form["TeachCourseJson"]; //反序列化獲取的JSON字符串?dāng)?shù)組 JArrayjavascript=(JArray)JsonConvert.DeserializeObject(ss); //依次遍歷反序列化的json字符串?dāng)?shù)組 for(inti=0;i

3.1 獲取前臺(tái)傳遞過(guò)來(lái)的JSON字符串?dāng)?shù)組

[csharp]view plaincopy print? //獲取前臺(tái)傳遞過(guò)來(lái)的授課JSON字符串?dāng)?shù)組 stringss=context.Request.Form["TeachCourseJson"];

3.2 反序列化前臺(tái)傳來(lái)的JSON字符才能換數(shù)組

[csharp]view plaincopy print? //反序列化獲取的JSON字符串?dāng)?shù)組 JArrayjavascript=(JArray)JsonConvert.DeserializeObject(ss);

3.3自定義Dataset,并建立各數(shù)據(jù)表,將前臺(tái)傳來(lái)的數(shù)據(jù)寫入DataTable表

創(chuàng)建Dataset及數(shù)據(jù)表

[csharp]view plaincopy print? //創(chuàng)建一個(gè)名為ds_StuTeacherCourse的DataSet //(用于存放表:學(xué)生、教師、課程關(guān)系表,學(xué)生、上課班關(guān)系表,課程分配上課班關(guān)系表) DataSetdsStuTeacherCourse=newDataSet("ds_StuTeacherCourse"); //手動(dòng)創(chuàng)建的新數(shù)據(jù)表-學(xué)生、教師、課程關(guān)系數(shù)據(jù)表 DataTabledtAddStudentTeaherCourse=newDataTable("dt_AddStudentTeaherCourse");//創(chuàng)建一個(gè)名為dt_AddStudentTeaherCourse的DataTalbe //為dt_AddStudentTeaherCourse表內(nèi)建立Column(表頭),添加數(shù)據(jù)列:StudentID,Indexing,IsAvailable dtAddStudentTeaherCourse.Columns.Add(newDataColumn("StudentID",typeof(string))); dtAddStudentTeaherCourse.Columns.Add(newDataColumn("Indexing",typeof(int))); dtAddStudentTeaherCourse.Columns.Add(newDataColumn("IsAvailable",typeof(string))); //手動(dòng)創(chuàng)建的新數(shù)據(jù)表-學(xué)生、上課班關(guān)系數(shù)據(jù)表 DataTabledtAddStudentTeachClass=newDataTable("dt_AddStudentTeachClass");//創(chuàng)建一個(gè)名為dt_AddStudentTeachClass的DataTalbe //為dt_AddStudentTeachClass表內(nèi)建立Column(表頭),添加數(shù)據(jù)列:StudentID,TeachClassID,IsAvailable dtAddStudentTeachClass.Columns.Add(newDataColumn("StudentID",typeof(string))); dtAddStudentTeachClass.Columns.Add(newDataColumn("TeachClassID",typeof(string))); dtAddStudentTeachClass.Columns.Add(newDataColumn("IsAvailable",typeof(string))); //手動(dòng)創(chuàng)建的新數(shù)據(jù)表-課程分配、上課班關(guān)系數(shù)據(jù)表 DataTabledtAddCourseTeachClass=newDataTable("dt_AddCourseTeachClass");//創(chuàng)建一個(gè)名為dt_AddStudentTeachClass的DataTalbe //為dt_AddCourseTeachClass表內(nèi)建立Column(表頭),添加數(shù)據(jù)列:TeachClassID,Indexing,IsAvailable dtAddCourseTeachClass.Columns.Add(newDataColumn("TeachClassID",typeof(string))); dtAddCourseTeachClass.Columns.Add(newDataColumn("Indexing",typeof(int))); dtAddCourseTeachClass.Columns.Add(newDataColumn("IsAvailable",typeof(string))); dtAddCourseTeachClass.Columns.Add(newDataColumn("OddEven",typeof(string))); dtAddCourseTeachClass.Columns.Add(newDataColumn("StuNum",typeof(int))); 向數(shù)據(jù)表填充數(shù)據(jù),例如

[csharp]view plaincopy print? //添加課程分配、上課班關(guān)系信息表的新行 DataRowdrAddCourseTeachClass=dtAddCourseTeachClass.NewRow();//注意這邊創(chuàng)建dt的新行的方法。指定類型是DataRow而不是TableRow,然后不用new直接的用創(chuàng)建的DataTable下面的NewRow方法。 //課程分配、上課班關(guān)系信息表對(duì)應(yīng)的各列值 drAddCourseTeachClass["TeachClassID"]=strTeachClassIDs; drAddCourseTeachClass["Indexing"]=intIndexings; drAddCourseTeachClass["IsAvailable"]="是"; drAddCourseTeachClass["OddEven"]=null; drAddCourseTeachClass["StuNum"]=intStuNums; dtAddCourseTeachClass.Rows.Add(drAddCourseTeachClass);//將一整條數(shù)據(jù)寫入表中 將各數(shù)據(jù)表存入DataSet

[csharp]view plaincopy print? //將各表加入DataSet中: dsStuTeacherCourse.Tables.Add(dtAddStudentTeaherCourse); dsStuTeacherCourse.Tables.Add(dtAddStudentTeachClass); dsStuTeacherCourse.Tables.Add(dtAddCourseTeachClass);

3.4將DataSet中各數(shù)據(jù)表寫入數(shù)據(jù)庫(kù)

[csharp]view plaincopy print? //將DataSet中數(shù)據(jù)表導(dǎo)入數(shù)據(jù)庫(kù) BooleanflagImportStuTeacherCourse=newTeachCourseBLL().ImportStudentTeacherCourse(dsStuTeacherCourse);

這篇文章僅僅介紹了添加授課功能的實(shí)現(xiàn),所需要的JS文件及一般處理程序文件,導(dǎo)入數(shù)據(jù)庫(kù)用到的BLL層類方法等沒(méi)有介紹,批量導(dǎo)入數(shù)據(jù)功能的實(shí)現(xiàn)見(jiàn)博客《《項(xiàng)目經(jīng)驗(yàn)》--簡(jiǎn)單三層使用DataTable向數(shù)據(jù)庫(kù)表批量導(dǎo)入數(shù)據(jù)---向SqlServer一張表中導(dǎo)入數(shù)據(jù)》《《項(xiàng)目經(jīng)驗(yàn)》--簡(jiǎn)單三層使用DataTable向數(shù)據(jù)庫(kù)表批量導(dǎo)入數(shù)據(jù)---向SqlServer多張張表中導(dǎo)入數(shù)據(jù)》!






本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉