新聞中心
2009年9月駐站專家桂素偉老師簡介

目前成都創(chuàng)新互聯(lián)公司已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站改版維護、企業(yè)網(wǎng)站設(shè)計、太和網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
桂素偉,微軟MVP,專家堂成員。微軟中文技術(shù)論壇Visual C#、IT職業(yè)規(guī)劃談兩個版塊版主,微軟WebCast講師。精通C#,WinForm,ASP.NET,WPF,Windows Mobile等開發(fā)技術(shù)。山西DotNet俱樂部創(chuàng)始人之一,曾組織多次與微軟合作組織活動,并多次組織山西DotNet俱樂部線上線下活動。
點擊進入活動原帖
經(jīng)典問題一
我想請問題asp.net中如何使用數(shù)據(jù)控件來處理操作復(fù)雜對象(即包對象包含子對象)。例如
此為訂單管理的簡要類圖實現(xiàn)訂單的CRUD我目前的做法是,指定OrderRegister為ObjectDataSource,然后使用FormView綁定到它上面。在FormView里面放入一些TextBox可以呈現(xiàn)出Order的簡單類型的屬性如Date,再在FormView里面放入GridView并綁定GridView的DataSource到Order的Items上,Items是IList 類型。對于查看訂單信息來說,一切都沒有問題。問題在于新增和修改訂單時在FromView中嵌套GridView就不行了。我想請問基于這種復(fù)雜對象設(shè)計,怎么實現(xiàn)主對象與子對象的新增和修改操作。
駐站專家桂素偉老師的精彩回答:
這樣的話,那你就得從這些對象屬性中把數(shù)據(jù)得到,靈果你用的是ADO.NET,那么就分別把這些屬性的數(shù)據(jù)分離出來,用SQL語句提交到SQL Server來執(zhí)行。如果是LINQ To SQL,那就把整個實體類整合成LINQ To SQL所需要的實體類,進行Submit就可以。
后續(xù)提問:
OrderRegister是用來對Order進行CRUD的,它封裝了對數(shù)據(jù)庫的操作,至于OrderRegister的實現(xiàn)是Ado.net還是linqtosql都無所謂啊。問題的關(guān)鍵是在復(fù)雜對象結(jié)構(gòu)的情況下,表示層采用什么樣的控件如何與OrderRegister連接。
由于我希望代碼量盡可能的少,所以在新增Order的時候也使用FormView,問題是FormView只能處理簡單屬性,而不能處理對象
總而言之,就是使用FormView綁定對象數(shù)據(jù)源來進行訂單的新增,頁面上無法對訂單里面的OrderItem進行處理。
桂素偉老師回答
是的,你在添加Order的列表時,沒有辦法實現(xiàn)。如果每個字段都是簡單類型就好處理,現(xiàn)在關(guān)鍵是你的GridView沒有法與Order列表對應(yīng),并且你在Order對象中,一個Date字段可對應(yīng)一個OrderItem列表,這個列表的記錄多少都不確定,所以沒辦法在FormVIews中實現(xiàn)。只用放出來單獨處理了。
經(jīng)典問題二
我在寫C#語言傳送文件的程序,可是在對文件操作中出現(xiàn)了問題。
1,服務(wù)端
定義了一個和文件大小的緩沖區(qū),但是在以下的while循環(huán)中
- while (!feof(fp))
- {
用fread函數(shù),并且獲得返回值iCount = fread(pTmp,1, flen, fp);//pTmp是緩沖區(qū),flen是文件大小
而后通過
- send( m_server, pTmp, iCount , 0);發(fā)送數(shù)據(jù)
- }
2,客戶端
定義了接收指針char recvbuf[1024] = "";
以下也用了死循環(huán)
- while(true)
- {
- memset(recvbuf, 0, 1024);
- bytesRecv = recv( m_socket, recvbuf, 1024, 0 );
- fwrite(recvbuf, 1, bytesRecv, fp1);
- }
可是我在文件fp1中打印的并不是完整,希望高手指點。 并且我想如果服務(wù)端不一次性全部傳送,而是分大小傳,比如每次只傳1024字節(jié),又該如何處理?我嘗試了一些方法,但是都沒達(dá)到目的。
駐站專家桂素偉老師的精彩回答
你的大文件,可以一次讀進來,放在一個byte的數(shù)組中,然后你再批量分步處理這些元素就可以的。發(fā)送的時侯你考慮是多線程還是單線程,同時要考慮服務(wù)端。
經(jīng)典問題三
我想請問如果想從事socket開發(fā),那么使用。net的哪方面的控件呢,是不是也有很多托管的自動生成代碼可以省掉手寫的麻煩呀,我現(xiàn)在考慮從事網(wǎng)絡(luò)服務(wù)器相關(guān)軟件的開發(fā),但是不知道什么開發(fā)環(huán)境是理想的選擇,望桂老師給予回答。
駐站專家桂素偉老師的精彩回答
這些通用的軟件開發(fā)平臺都支持socket 開發(fā),有的IDE是封裝成控件,有的是封裝成類。.net 的socket 有好幾個類支持。常用的是TcpListener和TcpClient。同時還要使用到多線程的一些知識,也得熟悉一下。做成類的話,個人理解應(yīng)該要靈活的多,想要什么方式的通迅,是一對多,還是一對一,還是多對多,都由自己寫代碼來完成。
【編輯推薦】
- 2009年8月駐站專家周金橋老師精彩問答
- .NET C# DES入門淺析
- .NET寫入文本文件的操作淺析
- .NET自定義控件應(yīng)該如何實現(xiàn)?
- 淺析.NET 4.0和Visual Studio 2010多定向支持
網(wǎng)站標(biāo)題:2009年9月51CTO駐站專家桂素偉老師.NET精彩問答
文章網(wǎng)址:http://www.5511xx.com/article/cddgoeg.html


咨詢
建站咨詢
