锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲乱亚洲乱少妇无码,久久亚洲精品无码播放,亚洲精品无码不卡在线播HEhttp://www.tkk7.com/kapok/category/900.html鍨冨溇妗?鍢垮樋錛屾垜钘忕殑榪欎箞娣變綘浠繕鑳芥壘鍒板晩錛岀湡鐗涳紒zh-cnTue, 27 Feb 2007 15:57:44 GMTTue, 27 Feb 2007 15:57:44 GMT60綆鍗曡褰曚互涓嬨傝鏂囩敤http://www.tkk7.com/kapok/archive/2005/04/13/3134.html絎ㄧ絎ㄧWed, 13 Apr 2005 05:40:00 GMThttp://www.tkk7.com/kapok/archive/2005/04/13/3134.htmlhttp://www.tkk7.com/kapok/comments/3134.htmlhttp://www.tkk7.com/kapok/archive/2005/04/13/3134.html#Feedback0http://www.tkk7.com/kapok/comments/commentRss/3134.htmlhttp://www.tkk7.com/kapok/services/trackbacks/3134.htmlhttp://www.cnblogs.com/William_Fire/articles/125108.html

http://www.cnblogs.com/William_Fire/articles/125819.html



http://www.cnblogs.com/william_fire/articles/126665.html
http://www.cnblogs.com/tintown/archive/2005/03/23/124395.html


http://www.cnblogs.com/tintown/category/12787.html
http://www.cnblogs.com/tintown/archive/2005/04/04/131784.html


http://www.cnblogs.com/tintown/archive/2005/04/04/131784.html?Pending=true#PostPost


http://www.cnblogs.com/tintown/archive/2005/04/07/132876.html

http://blog.sunmast.com/sunmast/articles/816.aspx

ADO.NET瀵硅薄妯″瀷錛?BR>http://www.phome.net/document/net/200504/net111246243813950.html


http://www.phome.net/document/net/200504/net111246243713949.html



 


ADO.NET--浠涔堟槸鍏崇郴鍨嬫暟鎹簱

http://www.phome.net/document/net/200504/net111246244913952.html


ADO.NET瀵硅薄妯″瀷
http://blog.csdn.net/jabby12/archive/2004/08/02/59221.aspx

      ADO.NET鏄笓闂ㄤ負甯姪寮鍙戜漢鍛樺紑鍙戦珮鏁堢殑澶氬眰鏁版嵁搴撳簲鐢ㄧ▼搴忚璁$殑銆侫DO.NET瀵硅薄妯″瀷鍙垎涓轟袱綾伙細涓綾諱負鈥滆繛鎺ョ殑鈥濓紝涓綾諱負鈥滄柇寮榪炴帴鐨勨濆璞★紝鍚庤呭厑璁稿皢鏌ヨ緇撴灉淇濆瓨鍦ㄥ唴瀛樹腑榪涜澶勭悊銆?/P>

鈥濊繛鎺ョ殑鈥滃璞℃ā鍨嬮【鍚嶆濅箟錛屽畠鏄洿鎺ヤ笌鏁版嵁搴撹繘琛岃繛鎺ユ搷浣?鈥滄柇寮榪炴帴鈥濈殑瀵硅薄妯″瀷鍙互璇存槸寤虹珛鍦ㄢ滆繛鎺ョ殑鈥濆璞℃ā鍨嬬殑鍩虹涓婅繘琛岀殑錛屽洜涓哄畠蹇呴』鍏堣繘琛屼竴嬈♀滆繛鎺ョ殑鈥濇搷浣滐紝鎵嶈兘寰楀埌鎵闇鐨勭粨鏋溿?/P>

      涓句釜渚?錛?nbsp;                       

SqlConnection con=new SqlConnection("server=localhost;database=db,uid=sa,pwd=;");

SqlDataAdapter ad=new SqlDataAdapter("select * from table",con);

DataSet ds=new Dataset();

ad.Fill(ds,"table");

//娉ㄦ剰榪欓噷宸茬粡灝嗕粠鏁版嵁搴撻噷鏌ヨ鍑烘潵鐨勭粨鏋滄斁鍒頒竴涓狣ataset瀵硅薄閲岋紝浠庢鍒誨紑濮嬶紝浣犲氨寮濮嬩嬌鐢ㄢ滄柇寮榪炴帴鈥濈殑瀵硅薄妯″瀷鏉ュ鏁版嵁搴撹繘琛屾搷浣滐紝DataSet瀵硅薄鏄竴涓湪鍐呭瓨涓殑鈥濊櫄鏁版嵁琛ㄢ滐紝浣犲彲浠ュ瀹冭繘琛屼換浣曟搷浣滆屼笉褰卞搷鏁版嵁搴擄紝鍙互瀵瑰畠榪涜鎺掑簭錛屼慨鏀癸紝鏌ヨ錛屽鍔狅紝鍒犻櫎銆傝屽鏋滀綘鎯蟲洿鏀規暟鎹簱鍐呭鐨勮瘽錛屼篃鍙互閫氳繃DataSet瀵硅薄鏉ユ搷浣滐紝寰堢畝鍗曪紝璋冪敤瀹冪殑update()鏂規硶鍗沖彲瀹屾垚鏇存柊鏁版嵁搴撱備篃鍙互浣跨敤瀹冪殑GetChanges()鏂規硶鏉ヨ幏鍙栧彧鏇存敼榪囩殑琛岋紝瀹冭繑鍥炰竴涓狣ataSet錛岃繖涓狣ataset涓嶅悓浜庤皟鐢℅etChanges()鏂規硶鐨勯偅涓紝榪斿洖鐨勮繖涓彧鏄畠鐨勪竴寮犲瓙琛紝涔熷氨鏄洿鏀硅繃鐨勬暟鎹紝鍒╃敤姝ゆ柟娉曞彲浠ュぇ澶у湴鎻愰珮澶氬眰ADO.NET搴旂敤紼嬪簭鐨勬ц兘銆侱ataSet綾昏繕鏈変竴涓狹erge鏂規硶鐢ㄦ潵鍚堝茍涓や釜DataSet瀵硅薄鐨勬暟鎹紝ADO.NET榛樿瑕嗙洊琚皟鐢∕erge()鏂規硶鐨凞ataSet涓殑琛屻?/P>

ADO.NET榪樻彁渚涗簡涓縐嶅己綾誨瀷鐨凞ATASET瀵硅薄錛氬畠鍙互甯姪浣犵畝鍖栧緩绔嬫暟鎹闂簲鐢ㄧ▼搴忕殑榪囩▼銆備緥濡傦細鏈変釜琛ㄥ彨table,鍏朵腑鏈変竴鍒楀彨column浣犲彲浠ヨ繖鏍鋒潵璁塊棶姝ゅ垪錛?/P>

vb.net:    Dim ds as DataSet

            Console.WriteLine(ds.table(0).column);   (table(0).琛ㄧずtable琛ㄤ腑鐨勭1琛岋級

c#:         DataSet ds;

             Console.WriteLine(ds.table[0].column);  (table[0].琛ㄧずtable琛ㄤ腑鐨勭1琛岋級

鏄笉鏄緢綆媧? ^_^

鍏充簬DataSet閲岄潰榪樻湁濂藉涓滆タ鏂逛究鐢ㄥ錛欴ataTable,DataView,DataRow,DataColumn,DataRelation,Constraint涓澶у爢鐨勫ソ涓滆タ錛屽湪浠ュ悗鐨勬棩蹇椾腑浼氭彁鍒幫紒



  鍙錛屽湪鍒嗗眰鐨勬椂鍊欙紝鎴戜滑浼氬鍔犱竴涓疄浣撳眰錛屽畠鐨勪綔鐢ㄥ涓嬶細
  鈶?灝嗘樉紺烘暟鎹拰瀹為檯鐨勫瓨鍌ㄥ尯鍩熼殧紱伙紝淇濊瘉浜嗕笟鍔$殑鐙珛鎬э紝鎻愰珮浜嗗彲閲嶇敤鎬с?
  鈶?鍦ㄤ笟鍔″眰鍜岃〃鐜板眰涔嬮棿浼犻掓暟鎹傦紙濡傛灉娌℃湁瀹炰綋灞傜殑璇濓紝鎴戜滑闇瑕佹妸琛ㄧ殑姣忎釜瀛楁浣滀負涓涓弬鏁板湪瀹冧滑涔嬮棿浼犻掞紝濡傛灉淇敼鐨勮瘽錛屽皢闇瑕佸獎鍝嶅埌紼嬪簭鐨勫悇涓眰錛?
  鈶?鎻愪緵鏇村ぇ鐨勫彲鏀剁緝鎬с?
  
  2錛?涓氬姟瀹炰綋灞傜殑鍑犵閫夋嫨鏂規鍙婂叾浼樼己鐐廣?
  鍦?NET鐜涓嬪疄鐜頒笟鍔″疄浣撴湁涓嬮潰鐨勫嚑縐嶉夋嫨錛?
  鈶?DataReader BE 鍏鋒湁鏈蹇殑璇誨彇閫熷害錛岀敤浜庡彧璇葷殑鍦哄悎錛屼笉鍏鋒湁OO鐨勬蹇點?
  鈶?XML BE 鍙互涓嶺ML Reader鍜孌ataSet杞崲銆傜己鐐癸細鎬ц兘浣庯紝楠岃瘉銆佽В鏋愩佹樉紺恒佹帓搴忕瓑閮藉緢澶嶆潅銆?
  鈶?Generic DataSet BE 浼樼偣錛氭暟鎹粦瀹氱瓑銆傜己鐐癸細瀹㈡埛绔繀欏婚氳繃闆嗗悎鏉ヨ幏鍙栨暟鎹紝娌℃湁綾誨瀷錛屽疄渚嬪寲寮閿澶э紝璋冨害鎬ц兘浣庛?
  鈶?Typed DataSet BE 浼樼偣錛氱敱綾誨瀷錛屽彲浠ヨ繘琛岀被鍨嬫鏌ャ傜己鐐癸細鍙兘浠嶥ataSet緇ф壙錛岄儴緗蹭笉鏂逛究錛屽彲鎵╁睍鎬у樊錛屽疄渚嬪寲寮閿澶э紝璋冨害鎬ц兘浣庛?
  鈶?Custom BE銆浼樼偣錛氭ц兘璋冧紭錛屼唬鐮佹洿鍏鋒湁鍙鎬э紝鐢ㄨ嚜瀹氫箟瀹炰綋綾誨畾涔変竴涓壇濂界殑鎺ュ彛錛屽皢澶嶆潅闂闅愯棌鍦ㄥ叾涓傜己鐐癸細璁捐寮鍙戦兘寰堝鏉傦紝闇瑕佽嚜宸卞幓瀹炵幇CURD鎿嶄綔錛岃嚜宸卞幓瀹炵幇鏁版嵁緇戝畾錛屽伐浣滈噺寰堝ぇ銆?
  鈶?O/R Mapping鐨勫疄鐜?瀹冨叿鏈夎嚜瀹氫箟綾葷殑鎵鏈変紭鐐癸紝鍚屾椂瀹炵幇浜咰RUD錛屾暟鎹粦瀹氱瓑鎿嶄綔銆?

鍏充簬ObjectSpaces 鍜?U>llblgen
http://www.llblgen.com/defaultgeneric.aspx
http://www.sinzy.net/blog/Read.asp?ID=44&BID=931


http://www.csdn.net/develop/author/NetAuthor/sun2bin/

絎ㄧ 2005-04-13 13:40 鍙戣〃璇勮
]]>
Implementing Data Transfer Object in .NET with a Typed DataSethttp://www.tkk7.com/kapok/archive/2005/04/12/3173.html絎ㄧ絎ㄧTue, 12 Apr 2005 04:49:00 GMThttp://www.tkk7.com/kapok/archive/2005/04/12/3173.htmlhttp://www.tkk7.com/kapok/comments/3173.htmlhttp://www.tkk7.com/kapok/archive/2005/04/12/3173.html#Feedback0http://www.tkk7.com/kapok/comments/commentRss/3173.htmlhttp://www.tkk7.com/kapok/services/trackbacks/3173.htmlhttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/ImpDTOtypedDataSet.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconworkingwithtypeddataset.asp

Implementing Data Transfer Object in .NET with a Typed DataSet

? Data Column: select for more on pattern organization Application Column: select for more on pattern organization Deployment Column: select for more on pattern organization Infrastructure Column: select for more on pattern organization
Architecture Row: select for more on pattern organization Data Architecture: select for more on pattern organization Application Architecture: select for more on pattern organization Deployment Architecture: select for more on pattern organization Infrastructure Architecture: select for more on pattern organization
Design Row: select for more on pattern organization Data Design: select for more on pattern organization Application Design: select for more on pattern organization Deployment Design: select for more on pattern organization Infrastructure Design: select for more on pattern organization
Implementation Row Data Implementation: select for more on pattern organization Application Implementation: select for more on pattern organization Deployment Implementation: select for more on pattern organization Infrastructure Implementation: select for more on pattern organization
? Complete List of patterns & practices Complete List of patterns & practices Complete List of patterns & practices Complete List of patterns & practices

Version 1.0.0

GotDotNet community for collaboration on this pattern

Complete List of patterns & practices

Context

You are implementing a distributed application with the .NET Framework. The client application displays a form that requires making multiple calls to an ASP.NET Web service to satisfy a single user request. Based on performance measurements you have found that making multiple calls degrades application performance. To increase performance, you would like to retrieve all the data that the user request requires in a single call to the Web service.

Background

Note: The following is the same sample application that is described in Implementing Data Transfer Object in .NET with a DataSet.

The following is a simplified Web application that communicates with an ASP.NET Web service to deliver recording and track information to the user. The Web service in turn calls a database to provide the data that the client requests. The following sequence diagram depicts the interaction among the application, the Web service, and the database for a typical page.

Figure 1: Behavior of a typical user request

Figure 1 illustrates the sequence of calls needed to fulfill the entire user request. The first call retrieves the recording information, and the second call retrieves the track information for the specified recording. In addition, the Web service must make separate calls to the database to retrieve the required information.

Database Schema

The schema that is used in the example shown in Figure 2 depicts a recording record that has a one-to-many relationship with a track record.

Figure 2: Schema for sample application

Implementing a DTO

One way to improve the performance of this user request is to package all the required data into a data transfer object (DTO) that can be sent with a single call to the Web service. This reduces the overhead associated with two separate calls and allows you to use a single connection with the database to retrieve both the recording and the track information. For a detailed description of how this improves performance, see the Data Transfer Object pattern.

Implementation Strategy

A typed DataSet is a generated subclass of System.Data.DataSet. You provide an XML schema file which is then used to generate a strongly-typed wrapper around the DataSet. The following two code samples illustrate the differences. The first sample is implemented with an ordinary DataSet:

 

DataTable dataTable = dataSet.Tables["recording"];
DataRow row = dataTable.Rows[0];
string artist = (string)row["artist"];
 

This sample indicates that you need to know the table and column names to access the tables and fields contained in the DataSet. You also have to know the return type of the Artist field to ensure that the correct cast is done. If you do not use the correct type, you will get a runtime error. The following is the same example implemented with a typed DataSet:

 

   Recording recording = typedDataSet.Recordings[0];
   string artist = recording.Artist; 
 

This example demonstrates the benefits that the typed interface provides. You no longer have to refer to table or column by name and you do not have to know that the return type of the Artist column is a string. A typed DataSet defines a much more explicit interface that is verifiable at compile time instead of at runtime. In addition to the strongly-typed interface a typed DataSet also can be used in all places a DataSet can be used; therefore, it also can be used as a DTO. It is loaded in a similar fashion as a DataSet and it can be serialized to and from XML. In comparison to an ordinary DataSet you do have to write and maintain an XML schema that describes the typed interface. The Microsoft Visual Studio .NET development system provides a number of tools that simplify the creation and maintenance of the schema.The rest of this implementation strategy outlines the steps required in creating a typed DataSet for the sample application just described.

Creating a Typed DataSet

A typed DataSet is generated from an XML schema. Visual Studio .NET provides a drag-and-drop tool which automates the creation of the schema (see Figure 3) and the generation of the typed DataSet classes. If you do not use Visual Studio.NET, you can write the XML schema and use a command-line tool called XSD.exe to generate the typed DataSet. For detailed instructions on both of these methods, see "Typed DataSets in ADO.NET" from the May 2001 issue of .NET Developer [Wildermuth02].

Figure 3: Visual Studio .NET DataSet file type

RecordingDto.xsd

The following is the XML schema for the DTO to be used in this example. It combines both the recording table along with its associated track records in a single typed DataSet named RecordingDto:

 

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="RecordingDto" targetNamespace="http://msdn.microsoft.com/practices/RecordingDto.xsd"
   elementFormDefault="qualified" attributeFormDefault="qualified" xmlns="http://tempuri.org/RecordingDTO.xsd"
   xmlns:mstns="http://msdn.microsoft.com/practices/RecordingDto.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:codegen="urn:schemas-microsoft-com:xml-msprop">
   <xs:element name="RecordingDto" msdata:IsDataSet="true">
      <xs:complexType>
         <xs:choice maxOccurs="unbounded">
            <xs:element name="recording" codegen:typedName="Recording" codegen:typedPlural="Recordings"
               codegen:typedChildren="Track">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="id" type="xs:long" codegen:typedName="Id" />
                     <xs:element name="title" type="xs:string" codegen:typedName="Title" />
                     <xs:element name="artist" type="xs:string" codegen:typedName="Artist" />
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name="track" codegen:typedName="Track" codegen:typedPlural="Tracks" codegen:typedParent="Recording">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="id" type="xs:long" codegen:typedName="Id" />
                     <xs:element name="title" type="xs:string" codegen:typedName="Title" />
                     <xs:element name="duration" type="xs:string" codegen:typedName="Duration" />
                     <xs:element name="recordingId" type="xs:long" codegen:typedName="RecordingId" />
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
         </xs:choice>
      </xs:complexType>
      <xs:unique name="RecordingDTOKey1" msdata:PrimaryKey="true">
         <xs:selector xpath=".//mstns:recording" />
         <xs:field xpath="mstns:id" />
      </xs:unique>
      <xs:unique name="RecordingDTOKey2" msdata:PrimaryKey="true">
         <xs:selector xpath=".//mstns:track" />
         <xs:field xpath="mstns:id" />
      </xs:unique>
      <xs:keyref name="recordingtrack" refer="mstns:RecordingDTOKey1">
         <xs:selector xpath=".//mstns:track" />
         <xs:field xpath="mstns:recordingId" />
      </xs:keyref>
   </xs:element>
</xs:schema>
 

This schema is not the exact file produced by Visual Studio .NET. It is annotated with a number of attributes that are prefixed from the codegen namespace. This modification is desirable because the code that is generated does not adhere to the .NET naming conventions. For example, without the modification, Visual Studio .NET would generate a track class that corresponds to the track table, whereas according to conventions used in the .NET Framework the class should be named Track. To change the name of the class that is generated, you must add the codegen:typedName attribute to the element definition in the XML schema:

 

<xs:element name="track" codegen:typedName="Track">
   
</element>
 

There are a number of other attributes besides codegen:typedName. For a detailed description of all the attributes, see "Typed DataSets in ADO.NET" from the May 2001 issue of .NET Developer [Wildermuth02].

Filling a Typed DataSet from the Database

The following code example demonstrates how to fill a typed DataSet with the data that the sample application requires. This includes the specific recording record and all of its associated track records. The difference between this code and filling an ordinary DataSet is that you do not need to explicitly define the relationship between the recording and track records.

Assembler.cs

Just as in Implementing a Data Transfer Object in .NET with a DataSet, an Assembler class maps the actual database calls into the typed DataSet:

 

using System;
using System.Data;
using System.Data.SqlClient;

using Recording;

public class Assembler
{
   public static RecordingDto CreateRecordingDto(long id)
   {
      string selectCmd = 
         String.Format(
         "select * from recording where id = {0}",
         id);

      SqlConnection myConnection = 
         new SqlConnection(
         "server=(local);database=recordings;Trusted_Connection=yes;");
      SqlDataAdapter myCommand = new SqlDataAdapter(selectCmd, 
         myConnection);

      RecordingDto dto = new RecordingDto();
      myCommand.Fill(dto, "recording");

      String trackSelect = 
         String.Format(
         "select * from Track where recordingId = {0} order by Id",
         id);

      SqlDataAdapter trackCommand = 
         new SqlDataAdapter(trackSelect, myConnection);
      trackCommand.Fill(dto, "track");

      return dto;
   }
}
 

Note: The example shown here is not meant to describe the only way to fill the typed DataSet. There are many ways to retrieve this data from the database. For example, you could use a stored procedure.

Using a Typed DataSet in an ASP.NET Page

As mentioned previously, a typed DataSet inherits from System.Data.DataSet. This means that it can be substituted for a DataSet. For example, when using the .NET user interface controls (Web Forms or Windows Forms) a typed DataSet can be used in all places you could use a DataSet. The sample application page shown in the following code example uses two DataGrid controls, RecordingGrid and TrackGrid. You can use the typed DataSet, RecordingDto when setting the DataSource properties on the controls because a typed DataSet inherits from DataSet.

 

using System;
using System.Data;
using RecordingApplication.localhost;

public class RetrieveForm : System.Web.UI.Page
{
   private RecordingCatalog catalog = new RecordingCatalog();
 
   // 

   protected void Button1_Click(object sender, System.EventArgs e)
   {
      string stringId = TextBox1.Text;
      long id = Convert.ToInt64(stringId);

      RecordingDTO dto = catalog.Get(id);
      RecordingGrid.DataSource = dto.recording;
      RecordingGrid.DataBind();

      TrackGrid.DataSource = dto.track;
      TrackGrid.DataBind();
   }
}
 

Tests

Because the typed DataSet is generated by tools in the .NET Framework, you do not need to write tests to verify that it functions correctly. In the following tests, you are testing that the Assembler class loaded the typed DataSet correctly.

AssemblerFixture.cs

 

using NUnit.Framework;
using System.Data;
using Recording;

[TestFixture]
public class AssemblerFixture
{
   private RecordingDto dto;
   private RecordingDto.Recording recording;
   private RecordingDto.Track[] tracks; 
   
   [SetUp]
   public void Init()
   {
      dto = Assembler.CreateRecordingDto(1234);
      recording = dto.Recordings[0];
      tracks = recording.GetTracks();
   }

   [Test]
   public void RecordingCount()
   {
      Assert.Equals(1, dto.Recordings.Rows.Count);
   }

   [Test]
   public void RecordingTitle()
   {
      Assert.Equals("Up", recording.Title.Trim());
   }


   [Test]
   public void RecordingChild()
   {
      Assert.Equals(10, tracks.Length);

      foreach(RecordingDto.Track track in tracks)
      {
         Assert.Equals(recording.Id, track.RecordingId);
      }
   }

   [Test]
   public void TrackParent()
   {
      RecordingDto.Track track = tracks[0];
      RecordingDto.Recording parent = track.Recording;
      Assert.Equals("Up", parent.Title.Trim());
   }

   [Test]
   public void TrackContent()
   {
      RecordingDto.Track track = tracks[0];
      Assert.Equals("Darkness", track.Title.Trim());
   }

   [Test]
   public void InvalidRecording()
   {
      RecordingDto dto = Assembler.CreateRecordingDto(-1);
      Assert.Equals(0, dto.Recordings.Rows.Count);
      Assert.Equals(0, dto.Tracks.Rows.Count);
   }
}
 

These tests describe how to access the individual elements of the DataSet. Because of the use of a typed DataSet, the test code does not require the actual column names and does not require the return type to be cast. Comparing these tests with the ones described in Implementing Data Transfer Object in .NET with a DataSet reveals the differences between using a strongly-typed interface and a generic interface. The strongly-typed interface is easier to use and understand. It also provides the added benefit of compile-time checking on return types.

Resulting Context

Implementing DTO with a typed DataSet shares a number of the same benefits and liabilities as implementing DTO with a DataSet; however, certain benefits and liabilities are unique to a typed-DataSet implementation.

Benefits

The typed DataSet shares the following benefits with a DataSet when used as a DTO:

  • Development tool support. Because the DataSet class is implemented in ADO.NET, there is no need to design and implement the DTO. There is also extensive support in Visual Studio for automating the creation and filling of DataSet and typed-DataSet objects.

  • Integration with controls. A DataSet works directly with the built-in controls in Windows Forms and Web Forms, making it a logical choice as a DTO.

  • Serialization. The DataSet comes complete with the ability to serialize itself into XML. Not only is the content serialized, but the schema for the content is also present in the serialization.

  • Disconnected database model. The DataSet represents a snapshot of the current contents of the database. This means that you can alter the contents of the DataSet and subsequently use the DataSet as the means to update the database.

  • An additional benefit that might persuade you to use a typed DataSet as opposed to an ordinary DataSet is the strongly-typed interface of the typed DataSet. A typed DataSet, as described here, generates classes that can be used to access the contained data. The classes present an interface which defines how the class is to be used in a more explicit manner. This removes the need for casting which was present in the DataSet implementation.

    Liabilities

    The typed DataSet shares the following liabilities with a DataSet when used in the context of a DTO:

  • Interoperability. Because the DataSet class is part of ADO.NET, it is not the best choice for a DTO in cases requiring interoperability with clients that are not running the .NET Framework.. You can still use DataSet, however, the client will be forced to parse the XML and build its own representation. If interoperability is a requirement, see Implementing Data Transfer Object in .NET with Serialized Objects.

  • Stale data. The typed DataSet, like a DataSet, is disconnected from the database. It is filled with a snapshot of the data in the database when it is constructed. This implies that the actual data in the database may be different from what is contained in the typed DataSet. For reading primarily static data, this is not a major issue. If the data is constantly changing, however, using any kind of DataSet is not recommended.

  • Potential for performance degradation. Instantiating and filling a DataSet can be an expensive operation. Serializing and deserializing a DataSet can also be very time consuming. A good rule of thumb for using a DataSet is that a DataSet is a good choice when you are using more than one table or relying on the capability of the DataSet to update the database. If you are displaying the results from a single table, then using a DataReader with strongly-typed objects may offer better performance. For more information, see Implementing Data Transfer Object in .NET with Serialized Objects.

  • The following are additional liabilities when using a typed DataSet as opposed to an ordinary DataSet:

  • A typed DataSet is still a DataSet. A typed DataSet can be substituted at runtime with a DataSet. This means that even though the strongly-typed interface exists, programmers can still access the data without the typed interface. A possible result of doing this is that there could be parts of the code which couple the application tightly to the DataSet table and column names.

  • The need for an XML schema. When using a typed DataSet you have to create and maintain an XML schema to describe the strongly-typed interface. Visual Studio .NET provides a number of tools to assist in this process, but nevertheless you still have to maintain an additional file.

    Related Patterns

    For more information, see the following related patterns:

  • Implementing Data Transfer Object in .NET with a DataSet.

  • Implementing Data Transfer Object in .NET with Serialized Objects.

  • Assembler. In Enterprise Application Architecture Patterns, Fowler defines Assembler as a specialized instance of the Mapper pattern [Fowler03].

    Acknowledgments

    [Beau02] Beauchemin, Bob. Essential ADO.NET. Addison-Wesley, 2002.

    [Fowler03] Fowler, Martin. Enterprise Application Architecture Patterns. Addison-Wesley, 2003.

    [Wildermuth01] Wildermuth, Shawn. "Typed DataSets in ADO.NET." .NET Developer. May 2001.

    Patterns Practices



  • 絎ㄧ 2005-04-12 12:49 鍙戣〃璇勮
    ]]>
    [zt]鏁版嵁璁塊棶鎺ュ彛浣撶郴鍙婃暟鎹璞℃ā鍨嬫帰璁?Beat 1.0) .3http://www.tkk7.com/kapok/archive/2005/04/12/3170.html絎ㄧ絎ㄧTue, 12 Apr 2005 02:34:00 GMThttp://www.tkk7.com/kapok/archive/2005/04/12/3170.htmlhttp://www.tkk7.com/kapok/comments/3170.htmlhttp://www.tkk7.com/kapok/archive/2005/04/12/3170.html#Feedback0http://www.tkk7.com/kapok/comments/commentRss/3170.htmlhttp://www.tkk7.com/kapok/services/trackbacks/3170.html闃呰鍏ㄦ枃

    絎ㄧ 2005-04-12 10:34 鍙戣〃璇勮
    ]]>
    [ZT]鏁版嵁璁塊棶鎺ュ彛浣撶郴鍙婃暟鎹璞℃ā鍨嬫帰璁?Beat 1.0) 2http://www.tkk7.com/kapok/archive/2005/04/12/3169.html絎ㄧ絎ㄧTue, 12 Apr 2005 02:32:00 GMThttp://www.tkk7.com/kapok/archive/2005/04/12/3169.htmlhttp://www.tkk7.com/kapok/comments/3169.htmlhttp://www.tkk7.com/kapok/archive/2005/04/12/3169.html#Feedback0http://www.tkk7.com/kapok/comments/commentRss/3169.htmlhttp://www.tkk7.com/kapok/services/trackbacks/3169.html闃呰鍏ㄦ枃

    絎ㄧ 2005-04-12 10:32 鍙戣〃璇勮
    ]]>
    [ZT]鏁版嵁璁塊棶鎺ュ彛浣撶郴鍙婃暟鎹璞℃ā鍨嬫帰璁?Beat 1.0)http://www.tkk7.com/kapok/archive/2005/04/12/3168.html絎ㄧ絎ㄧTue, 12 Apr 2005 02:31:00 GMThttp://www.tkk7.com/kapok/archive/2005/04/12/3168.htmlhttp://www.tkk7.com/kapok/comments/3168.htmlhttp://www.tkk7.com/kapok/archive/2005/04/12/3168.html#Feedback0http://www.tkk7.com/kapok/comments/commentRss/3168.htmlhttp://www.tkk7.com/kapok/services/trackbacks/3168.html闃呰鍏ㄦ枃

    絎ㄧ 2005-04-12 10:31 鍙戣〃璇勮
    ]]>
    [CMS][ZT]鍐呭綆$悊緋葷粺(CMS)鐨勮璁″拰閫夊瀷http://www.tkk7.com/kapok/archive/2005/04/02/2741.html絎ㄧ絎ㄧSat, 02 Apr 2005 07:07:00 GMThttp://www.tkk7.com/kapok/archive/2005/04/02/2741.htmlhttp://www.tkk7.com/kapok/comments/2741.htmlhttp://www.tkk7.com/kapok/archive/2005/04/02/2741.html#Feedback0http://www.tkk7.com/kapok/comments/commentRss/2741.htmlhttp://www.tkk7.com/kapok/services/trackbacks/2741.html [CMS][ZT]鍐呭綆$悊緋葷粺(CMS)鐨勮璁″拰閫夊瀷
    钂叉案杈?鍙戣〃浜?2005-3-30 8:26:00

    銆浣滆咃細 杞︿笢 Email: chedongATbigfoot.com/chedongATchedong.com

    鐗堟潈澹版槑錛氬彲浠ヤ換鎰忚漿杞斤紝杞澆鏃惰鍔″繀浠ヨ秴閾炬帴褰㈠紡鏍囨槑鏂囩珷鍘熷鍑哄鍜屼綔鑰呬俊鎭強鏈0鏄?BR>http://www.chedong.com/tech/cms.html

    鍏抽敭璇嶏細"content manage system" cms 鍐呭綆$悊緋葷粺

    鍐呭鎽樿錛?BR>

    鍐呭綆$悊緋葷粺姒傝堪


    鍐呭綆$悊緋葷粺鏄竴涓緢娉涚殑姒傚康錛氫粠鍟嗕笟闂ㄦ埛緗戠珯鐨勬柊闂葷郴緇熷埌涓漢鐨刉eblog閮藉彲浠ョО浣滃彂甯冪郴緇熴?BR>

    浣嗘棤璁哄浣曪紝鍦ㄥ彂甯冪郴緇熼夊瀷涔嬪墠錛岄鍏堜簡瑙h嚜宸辯殑瀹為檯闇姹傛槸鏈閲嶈鐨勶細鎯蟲牴鎹幇鎴愮郴緇熷皢鑷繁鐨勯渶姹傜‖寰涓婄収鎼槸闈炲父涓嶅彲鍙栫殑銆傝闂噺錛屾潈闄愭帶鍒跺拰鍚勭鍔熻兘闇姹傘傛瘡涓ā鍧楀拰鍔熻兘鑷繁閮芥瘮杈冩竻鏅頒竴鐐逛互鍚庯紝鍐嶅幓緗戜笂鎵炬壘綾諱技鐨勫疄鐜幫細浣犱細鍙戠幇鍏跺疄姣忎釜鐜妭鍒扮洰鍓嶄笂閮芥湁姣旇緝鎴愮啛鐨勫疄鐜頒簡錛岃屼笖榪樺湪涓嶆柇瀹屽杽鍜屽彂灞曚腑錛屽鏋滄病鏈夛細浣犵殑闇姹傚お鐗規畩錛屾垨鑰呭彲浠ュ皾璇曞垎瑙f垚鏇村皬鐨勭郴緇熺粍鍚堝疄鐜般?BR>

    鍐呭綆$悊緋葷粺琚垎紱繪垚浠ヤ笅鍑犱釜灞傞潰錛氬悇涓眰闈紭鍏堣冭檻鐨勯渶姹備笉鍚?BR>

    1. 鍚庡彴涓氬姟瀛愮郴緇熺鐞嗭紙綆$悊浼樺厛錛氬唴瀹圭鐞嗭級錛氭柊闂誨綍鍏ョ郴緇燂紝BBS璁哄潧瀛愮郴緇燂紝鍏ㄦ枃媯绱㈠瓙緋葷粺絳夛紝閽堝涓嶅悓緋葷粺鐨勬柟渚跨鐞嗚呯殑鍐呭褰曞叆錛氭墍瑙佸嵆鎵寰楃殑緙栬緫綆$悊鐣岄潰絳夛紝娓呮櫚鐨勪笟鍔¢昏緫錛氬悇縐嶅瓙緋葷粺鐨勬潈闄愭帶鍒舵満鍒剁瓑錛?
    2. Portal緋葷粺錛堣〃鐜頒紭鍏堬細妯℃澘綆$悊錛夛細澶ч儴鍒嗘渶緇堢殑杈撳嚭欏甸潰錛氱綉绔欓欏碉紝瀛愰閬?涓撻欏碉紝鏂伴椈璇︽儏欏典竴鑸氨鏄悇縐嶅悗鍙板瓙緋葷粺妯″潡鐨勫悇縐嶇粍鍚堬紝榪欑鍙戝竷緇勫悎閫昏緫鏄潪甯鎬赴瀵岀殑錛孭ortal緋葷粺灝辨槸璐熻矗浠ヤ笂榪欎簺鍚庡彴瀛愮郴緇熺殑緇勫悎琛ㄧ幇綆$悊錛?
    3. 鍓嶅彴鍙戝竷錛堟晥鐜囦紭鍏堬細鍙戝竷綆$悊錛夛細闈㈠悜鏈緇堢敤鎴風殑緙撳瓨鍙戝竷錛屽拰鎼滅儲寮曟搸spider鐨刄RL璁捐絳夆︹?/LI>

    鍐呭綆$悊鍜岃〃鐜扮殑鍒嗙錛氬緢澶氭垚濂楃殑CMS緋葷粺娌℃湁鎶婂悗鍙板悇縐嶅瓙緋葷粺鍜孭ortal鍒嗙寮璁捐錛屼互鑷充簬鍦≒ortal灞傜殑妯℃澘琛ㄧ幇綆$悊鍜屾柊闂誨瓙緋葷粺鐨勫唴瀹圭鐞嗛昏緫娣峰悎鍦ㄤ竴璧鳳紝鐢氳嚦鍜孊BS絳夊瓙緋葷粺鐨勭鐞嗛兘鑰﹀悎鐨勯潪甯擱珮錛屾暣涓郴緇熶細鏄懼緱闈炲父搴炴潅銆傝屼笖榪欐牱鐨勭郴緇熷悇涓瓙緋葷粺鎹嗙粦鐨勬瘮杈冩錛屽鏋滃悗鍙扮殑妯″潡寰堥毦鏀瑰彉銆備絾鏄鏋滄妸鍚庡彴鍚勭瀛愮郴緇熷唴瀹圭鐞嗛昏緫鍜屽墠鍙扮殑琛ㄧ幇/鍙戝竷鍒嗙鍚庯紝Portal鍜屽悗鍙板悇涓瓙緋葷粺涔嬮棿鍙槸鏁版嵁浼犻掔殑鍏崇郴錛歅ortal鍙喅瀹氬悗鍙板悇涓瓙緋葷粺鏁版嵁鐨勫彇鑸嶅拰琛ㄧ幇錛岃屽悗鍙扮殑鍚勪釜瀛愮郴緇熶篃閮介潪甯稿鏄撴彃鎷斻?BR>
    鍐呭綆$悊鍜屾暟鎹垎鍙戠殑鍒嗙錛氶渶瑕佽Portal緋葷粺璁捐鐨勬椂鍊欐敞鎰?/A>
    鍙紦瀛樻э紙Cache Friendly錛夋ц璁?/A>錛欳MS鍚庡彴綆$悊鍜屽彂甯冩満鍒訛紝鏈韓涓嶈榪囧鑰冭檻鈥滄晥鐜団濋棶棰橈紝鍙鏈緇堥〉闈㈣緭鍑鴻璁$殑姣旇緝Cacheable錛屾晥鐜囬棶棰樺彲閫氳繃鏇村墠绔笓闂ㄧ殑緙撳瓨鏈嶅姟鍣ㄨВ鍐熾?BR>
    姝ゅ錛屽氨鏄櫎浜嗛潰鍚戞渶緇堟祻瑙堝櫒鐢ㄦ埛澶栵紝榪樿娉ㄦ剰闈㈠悜
    鎼滅儲寮曟搸鍙嬪ソ(Search engine Friendly)鐨刄RL璁捐錛氶氳繃URL REWRITE杞悜鎴栧熀浜嶱ATH_INFO鐨勫弬鏁拌В鏋愪嬌寰楀姩鎬佺綉欏靛湪閾炬帴錛圲RI錛夊艦寮忎笂鏇村儚闈欐佺殑鐩綍緇撴瀯錛屾柟渚跨綉绔欏唴瀹硅鎼滅儲寮曟搸鏀跺綍錛?BR>

    ---------------    ---------------     ---------------                    
    |鏂伴椈綆$悊瀛愮郴緇焲 | BBS璁哄潧瀛愮郴緇焲 | 鍟嗗煄瀛愮郴緇? |
    --------------- --------------- ---------------
    | \ / | \ / 鍐?
    | ----------|--- \ / 瀹? <== 涓氬姟瀛愮郴緇燂紙闆朵歡鐢熶駭錛?BR> | / | \ \ / 綆?
    --------------- | --------------- 鐞?
    |涓撻鍒朵綔瀛愮郴緇焲 | |鍏ㄦ枃媯绱㈠瓙緋葷粺|
    --------------- | ---------------
    \ | /
    -------------------------|---------------------------------------------
    \ | / 棰?
    --------------- 閬? <== Portal緋葷粺錛堜駭鍝佺粍瑁咃級
    | Portal 緋葷粺 | 綆?
    --------------- 鐞?
    |
    -------------------------|---------------------------------------------
    | 鍓?
    | 鍙? <== 鍙戝竷緋葷粺錛堝垎鍙戜唬鐞嗭級
    --------------- 鍙?
    |鍓嶅彴鍙戝竷緋葷粺 | 甯?
    ---------------
    / \
    / \
    --------------- ---------------
    | 鐢ㄦ埛嫻忚鍣? | |Search Engine|
    --------------- ---------------

    榪欓噷錛屾垜鎶婂湪鍐呭鍙戝竷緋葷粺閫夊瀷涓壘鍒扮殑涓浜涜祫鏂欐葷粨濡備笅錛?

      鍐呭綆$悊緋葷粺鐨勯夊瀷

      鍏抽敭璇嶏細CMS Content Manage System

      CMS琛屼笟鐮旂┒
      http://www.cmswatch.com
      http://www.cmsreview.com
      http://www.cmsinfo.org

      CMS璁ㄨ閭歡鍒楄〃
      http://www.cms-list.org

      鍟嗕笟杞歡鍜屽紑婧愰」鐩垪琛細
      http://directory.google.com/Top/Computers/Software/Internet/Site_Management/Content_Management/

      鎺ㄨ崘錛氬熀浜嶺ML鐨勫彂甯冩鏋?BR>http://cocoon.apache.org/

      鍏蜂綋瀹炵幇澶嶆潅紼嬪害鍙兘浼氭牴鎹渶姹傜殑涓嶅悓鑰屼笉鍚岋紝浣嗚秺鏄ぇ鍨嬬殑緋葷粺瓚婃槸闇瑕佸垎宸ワ細灝嗗唴瀹癸紙鏁版嵁錛夛紝琛ㄧ幇錛堟ā鏉匡級鍜屽簲鐢ㄩ昏緫錛堢▼搴忥級灝藉彲鑳藉垎紱誨拰瀵硅繖3 鑰呯殑綆$悊銆?BR>

      Portal---闂ㄦ埛緋葷粺
      Open source Projects:
      http://jportlet.sourceforge.net/
      Apache Software Foundation: Jakarta JetSpeed 1.3
      JetSpeed home page:
      http://jakarta.apache.org/jetspeed/site/index.html
      JetSpeed Portlet API:
      http://cvs.apache.org/viewcvs/jakarta-jetspeed/proposals/portletAPI/
      http://www.liferay.com/home/index.jsp
      http://basicPortal.com/
      http://www.jahia.org/
      http://jporta.sourceforge.net/

      鍟嗕笟杞歡錛?BR>BEA WebLogic Portal -
      http://edocs.bea.com/wlp/docs81/javadoc/com/bea/Portal/model/Portlet.html
      IBM Websphere Portal -
      http://www.software.ibm.com/wsdd/zones/Portal/
      Oracle Portal Developer Kit -
      http://Portalstudio.oracle.com/

      鍏跺畠:
      P***L -
      http://jakarta.apache.org/jetspeed/site/psml.html
      BEA: Web Logic Portal 4.0
      http://www.bea.com/products/weblogic/Portal/index.shtml
      IBM: WebSphere Portal 2.1
      http://www-4.ibm.com/software/webservers/Portal/
      iPlanet: iPlanet Portal Server 3.0
      http://www.iplanet.com/products/iplanet_Portal/home_Portal.html
      Oracle: Oracle 9i Portal
      http://www.oracle.com/ip/deploy/ias/Portal/index.html
      SAP Portal:
      http://www.iviewstudio.com
      Epicentric Portal:
      http://www.epicentric.com/solutions/products/efs/

      鍙傝冿細
      Wafer錛欽ava寮鍙戞鏋剁爺絀?/A>
      http://www.waferproject.org/index.html

      闂ㄦ埛(Portal)緋葷粺鐩稿叧寮鍙戞鏋訛細
      http://udoo.51.net/mt/archives/000011.html

      騫垮憡綆$悊緋葷粺

      鍏抽敭璇嶏細ad server

      騫垮憡緋葷粺鍜屽唴瀹圭殑鍒嗙錛屽彲浠ュぇ澶ч檷浣庣郴緇熶箣闂寸殑鍏寵仈搴︺?BR> 
      涓撲笟琛屼笟鐮旂┒緗戠珯錛?BR>
      http://adres.internet.com

      鐩稿叧鍘傚晢鍜屽紑婧愰」鐩細
      http://directory.google.com/Top/Computers/Programming/Languages/PHP/Scripts/Ad_Management/?il=1
      http://directory.google.com/Top/Computers/Software/Internet/Servers/Advertising/?tc=1
      http://www.jspin.com/home/apps/admanage?cob=winedit
      http://www.scriptdex.com/dex/php_ad_management.shtml

      鎺ㄨ崘錛?BR>http://www.phpadsnew.com/ 鍔熻兘鎬ф瘮杈冨己
      http://oasis.sourceforge.net/ 鍏嶈垂 鍩轟簬鏃ュ織璁板綍鍜屽畾鏈熷鍏YSQL緇熻錛屽彲浠ヨ礋杞?0涓囪姹?姣忓皬鏃?浠ヤ笂

      濡傛灉鐪嬮噸騫垮憡鐨勭3鏂圭壒鎬э紝鍙互閫夋嫨絎笁鏂規湇鍔★細
      http://www.doubleclick.net/
      http://www.allyes.com/

      璁哄潧/紺懼尯緋葷粺

      鍏抽敭璇嶏細 BBS FORUM

      璁哄潧杞歡浠嬬粛錛?BR>
      http://directory.google.com/Top/Computers/Internet/Web_Design_and_Development/Message_Boards/

      鎺ㄨ崘錛?BR>
      http://www.phpBB.com PHP + MySQL open source
      http://www.vbulletin.com/order/ PHP + MySQL  鏈変粯璐圭殑鍟嗕笟鏀寔85錛?60$

      http://www.jivesoftware.com/products/pricing.jsp 鍟嗕笟璁哄潧緋葷粺錛?000$錛?500$ 鏈夌煡璇嗗簱鎵╁睍搴旂敤
      http://yazd.yasna.com/features.jsp 鍩轟簬 Java

      鎵瑙佸嵆鎵寰楋紙WYSIWYG錛夌紪杈戝櫒

      鍦ㄥ唴瀹圭殑褰曞叆綆$悊鏂歸潰錛屾墍瑙佸嵆鎵寰楁槸姣旇緝閲嶈鐨勶紝榪欐牱鍙互澶уぇ綆鍖栧緋葷粺涓竷灞鎺掔増鐨勯渶姹傘?BR>鍩轟簬嫻忚鍣ㄧ殑WYSIWYG錛堟墍瑙佸嵆鎵寰楋級緙栬緫鍣ㄦ槸CMS璁捐涓紝緙栬緫宸ュ叿鐨勪富瑕佽冭檻鏂歸潰銆傜洰鍓嶄富瑕佹槸閫氳繃JAVASCRIPT璋冪敤IE鎴栧叾浠栨祻瑙堝櫒鐨勫唴緗柟娉曞疄鐜般傚叾涓熀浜嶪E5.5嫻忚鍣ㄧ殑瀹炵幇鏈涓虹畝媧併傝繖閲屾湁涓涓畬鏁寸殑渚嬪瓙錛?BR>Building a WYSIWYG HTML Editor Part 1/2
      Building a WYSIWYG HTML Editor Part 2/2

      涓昏鍔熻兘錛?BR>

      • 鑳藉閫氳繃JAVASCRIPT瀹炵幇鐨勫熀鏈姛鑳斤細鍔犵矖錛屾枩浣撳瓧錛屽眳涓紝娣誨姞閾炬帴錛屾坊鍔犲浘鐗囷紝妯″紡鍒囨崲錛欻TML鍜屾枃鏈ā寮忕殑鍒囨崲錛?
      • Word鍨冨溇浠g爜榪囨護
      • 鍥劇墖涓婅澆鎺ュ彛錛氬浘鐗囦笂杞芥渶濂介氳繃鍏朵粬鐙珛妯″潡瀹炵幇銆?/LI>

      閫夊瀷鎸囨爣錛?BR>

      • 涓嶄緷璧栨湇鍔″櫒绔唬鐮侊細鍙氳繃JAVASCRIPT鎴栧鎴風鎺т歡瀹炵幇浠g爜錛屽彲浠ヤ繚璇佷互鍚庣郴緇熻縼縐葷殑鏂逛究銆?
      • WORD鍨冨溇浠g爜榪囨護

      鍙鍖栫紪杈戝櫒澶у叏錛?BR>http://www.bris.ac.uk/is/projects/cms/ttw/ttw.html

      鎺ㄨ崘錛?BR>
      http://www.aine.be/aynhtml/

      鍥劇墖/鏂囦歡涓婁紶緇勫緩

      鍥劇墖鍜屾枃浠剁瓑闈炵粨鏋勫寲鏁版嵁榪樻槸鍒嗗埆浣跨敤鍙﹀鐨勬湇鍔¤В鍐蟲瘮杈冨ソ銆傝繖鏍峰彲浠ュぇ澶х畝鍖朇MS鏈韓鐨勫鏉傜▼搴︺?BR>
      鎺ㄨ崘錛?BR>鏂囦歡涓婁紶錛?BR>
      Apache Commons欏圭洰
      http://jakarta.apache.org/commons/

      ImageJ錛氬浘鐗囧鐞嗙緝鐣ュ浘鐢熸垚鍜屾按鍗扮瓑
      http://rsb.info.nih.gov/ij/

      鍏充簬Blog緋葷粺鐨勯夊瀷錛岀洰鍓嶄富嫻佺殑鍩轟簬PHP鐨勫寘鎷細
      路 Nucleus 3.0
      www.nucleuscms.org
      路 pmachine 2.3
      www.pmachine.com
      路 b2evolution 0.9.0.3
      www.b2evolution.net
      路 Serendipity 0.6
      www.s9y.org
      路 WordPress 1.2
      www.wordpress.org
      路 bBlog 0.7.3
      www.bblog.com
      路 pLog 0.3.1
      www.plogworld.org
      路 Simplog .9
      www.simplog.org
      路 Textpattern 1.18a
      www.textpattern.com



      絎ㄧ 2005-04-02 15:07 鍙戣〃璇勮
      ]]>
      Java Treehttp://www.tkk7.com/kapok/archive/2005/03/31/2657.html絎ㄧ絎ㄧThu, 31 Mar 2005 06:08:00 GMThttp://www.tkk7.com/kapok/archive/2005/03/31/2657.htmlhttp://www.tkk7.com/kapok/comments/2657.htmlhttp://www.tkk7.com/kapok/archive/2005/03/31/2657.html#Feedback0http://www.tkk7.com/kapok/comments/commentRss/2657.htmlhttp://www.tkk7.com/kapok/services/trackbacks/2657.html http://www.matrix.org.cn/article/335.html

      鍘熷垱 浣滆?- joinme

      Tree鍨嬬粨鏋勶紝Tree鍥句笉綆″湪鍝釜棰嗗煙閮芥槸涓涓瘮杈冨悆棣欑殑涓滀笢銆傚湪鑷繁鐨勭綉绔欐垨欏圭洰涓湁涓涓猼ree鍨嬪浘鎴杢ree鍨嬬粨鏋勭殑鏉冮檺錛堟垨瑙掕壊錛屽拰鏁版嵁搴撹璁$浉鍏籌級錛屾昏兘鏈夐偅涔堜竴鐐圭偣鎴愬氨鎰熴俕_^
          榪欑瘒鏂囩珷灝辨妸鎴戣嚜宸卞湪榪欐柟闈㈠簲鐢ㄧ殑瀹炶返鏁寸悊涓涓嬫嬁鍑烘潵銆備負鎮ㄨ緇嗕粙緇嶄簡鍦═ree鏈夊叧鏂歸潰搴旂敤鐨勫畬鏁村疄璺點?BR>瀹炰緥濡備笅錛?A target=_blank>
      宸﹁竟鐨則ree鍥劇殑瀹炵幇鏂瑰紡鏄氳繃javascript+jsp瀹炵幇銆傚鏋滄槸涓轟簡瀹炵幇閫昏緫涓婄殑tree緇撴瀯鐨勭淮鎶わ紝閲囩敤鐨勬槸xml瑙e喅鏂規銆?BR>鐜板湪榪欓噷璇翠竴涓?javascript+jsp鐨勮〃鐜板眰鐨勫疄鐜般傝繖閲岀殑javascript騫朵笉鏄敮涓鐨勯夋嫨錛屽彲浠ュ湪緗戜笂涓嬪埌綾諱技鐨刯avascript(姣曠珶鏄叡浜殑鍢涖?) ).鐐?A target=_blank>榪欓噷鍙互涓嬭澆鐩稿叧浠g爜.
      鍏朵腑鐨則est.htm鏄痡avascript渚嬪瓙浠g爜:
      <script type="text/javascript" src="include/dtree.js"></script>
      <div class="dtree">
       <script type="text/javascript">
        <!--
        d = new dTree('d');
        d.add(0,-1,'鏂囩珷鐩綍');
      d.add(3,0,'鎶鏈笌鏂規','admin.php?module=article&action=catelist&cid=3','','_blank');
      d.add(5,0,'鏂伴椈涓績','admin.php?module=article&action=catelist&cid=5');
      d.add(34,5,'鏂伴椈涓績','admin.php?module=article&action=catelist&cid=5');
      d.add(35,34,'鏂伴椈涓績','admin.php?module=article&action=catelist&cid=5');
      d.add(36,35,'鏂伴椈涓績','admin.php?module=article&action=catelist&cid=5');
      d.add(37,36,'鏂伴椈涓績','admin.php?module=article&action=catelist&cid=5');
      d.add(38,37,'鏂伴椈涓績','admin.php?module=article&action=catelist&cid=5');
      d.add(7,6,'緗戠粶鐭ヨ瘑','admin.php?module=article&action=catelist&cid=7');
      d.add(8,6,'閰嶇疆鎵嬪唽','admin.php?module=article&action=catelist&cid=8');
      d.add(9,6,'緗戠粶瀹夊叏','admin.php?module=article&action=catelist&cid=9');
      d.add(10,3,'瑙e喅鏂規','admin.php?module=article&action=catelist&cid=10');
      d.add(11,10,'灞鍩熺綉','admin.php?module=article&action=catelist&cid=11');
      d.add(12,10,'瀹藉甫鎺ュ叆','admin.php?module=article&action=catelist&cid=12');
      d.add(6,3,'緗戠粶鎶鏈?,'admin.php?module=article&action=catelist&cid=6');
      document錛巜rite(d);

      -->
      </script>
      </div>
      "d.add(3,0,'鎶鏈笌鏂規','admin.php?module=article&action=catelist&cid=3','','_blank');
      "涓殑"3"鏄綋鍓嶈妭鐐癸紝"0"鏄埗鑺傜偣,"鎶鏈笌鏂規"鏄痶ree涓婃樉紺虹殑鑺傜偣鍚?"admin.php?......"鎸囧悜鐨剈rl."_blank"鏄寚鍚戠殑紿楀彛銆?BR>浠庝笂鍙互鐪嬪嚭錛岃繖涓猨avascript宸茬粡鎶妕ree鍥懼疄鐜扮殑澶ч儴鍒嗗伐浣滃凡緇忓仛濂戒簡銆傚彧瑕佹垜浠紶鍏ュ搴旂殑鏁版嵁灝卞彲浠ヤ簡銆?BR>棣栧厛鏄暟鎹簱緇撴瀯銆備粠涓婂彲浠ョ湅鍑猴紝鏈夎妭鐐瑰悕錛岃妭鐐筰d,鐖惰妭鐐筰d,鑺傜偣url,鑺傜偣target,榪樺彲浠ユ湁涓妭鐐圭姸鎬侊紙姣斿鏄縺媧繪垨浼戠湢錛屽緢甯哥敤鐢ㄤ竴縐嶇敤娉曪級錛屽綋鐒惰繕鍙互鏈夊叾瀹冨睘鎬э紝閭e氨瑕佹牴鎹」鐩殑闇瑕佷簡銆傚叾瀹炲彧瑕佹姄浣忎竴鐐癸紝鏈夊敮涓鑺傜偣id鍜屽敮涓鐖惰妭鐐筰d灝卞彲浠ヤ簡錛堥潰鍚戝璞★級灝卞彲浠ヤ簡銆?BR>鏈変簡鏁版嵁搴撶粨鏋勶紝鐒跺悗瑕佸疄鐜皌ree鍥懼氨鏄牴鎹竴瀹氱殑闄愬埗錛堟瘮濡傛潈闄愶紝鏈鍚庡搴斾負tree緇撴瀯鐨勫瓙闆嗭紙褰撶劧涔熷繀欏繪槸瀹屾暣鐨則ree緇撴瀯錛夛級鍙栧嚭絎﹀悎鏉′歡騫朵笖瀹屾暣鐨則ree緇撴瀯鐨勬暟鎹紙鎴戦噰鐢ㄧ殑瑙e喅鏂規硶鏄妸鏉冮檺瀵瑰簲鐨勮妭鐐圭殑涓婃函鐖惰妭鐐歸兘鍙栧嚭鏉ヤ繚璇乼ree緇撴瀯鐨勫畬鏁存?鍏蜂綋鍙互鐪?A target=_blank>java&xml蹇冨緱(涓?錛?
      鍋囪鎴戜滑宸茬粡瀹屾垚浜嗕笂榪扮殑宸ヤ綔錛岄偅涔堣瀹炵幇tree鍥劇殑浠g爜搴旇濡備笅:
      .........
      <html>
      <head>
      <title>Untitled document錛巐t;/title>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
      <link rel="stylesheet" href="images/cj_styles.css" type="text/css">
      <script type="text/javascript" src="include/dtree.js"></script>
      </head>

      <body bgcolor="#FFFFFF" text="#000000" leftmargin="2" topmargin="0">
      <div class="dtree">

      <script type="text/javascript">
        <!--

       <%
       if(!finds){
        out.println("document錛巜rite('娌℃湁鏉冮檺');");
       }else{
       Result rsShow=ResultFactory.getResult("Vector");
       rsShow.setConnType("jdbc");
       rsShow.setSql(tempsqls);
       rsShow.Create();
       out.println("d=new dTree('d');");
       out.println("d.add(0,-1,'鏉冮檺鍒楄〃');");
       String t_tree_id,t_tree_id_p,t_tree_name,t_tree_address,t_tree_target;
        while(rsShow.next()){
         t_tree_id=rsShow.getString("tree_id");
         t_tree_id_p=rsShow.getString("tree_id_p");
         t_tree_name=rsShow.getString("tree_name");
         t_tree_address=rsShow.getString("tree_address");
         t_tree_address+="?tree_id="+rsShow.getString("tree_id")+"&tree_name="+rsShow.getString("tree_name"); //t_tree_address+="edit/list.jsp?tree_id="+rsShow.getString("tree_id")+"&tree_name="+rsShow.getString("tree_name");
         t_tree_target=rsShow.getString("tree_target").length()>0?rsShow.getString("tree_target"):"mainFrame";
         out.println("d.add("+t_tree_id+","+t_tree_id_p+",'"+t_tree_name+"','"+t_tree_address+"','','"+t_tree_target+"');");
        }
        out.println("d.add(-2,0,'閫鍑虹郴緇?,'/zdtadmin/content/login.jsp','','_top');");
        out.println("document錛巜rite(d);");
       rsShow.close();
       }
       %>

        -->
       </script>


      </div>


      </body>
      </html>
      榪欐牱灝卞疄鐜頒簡鍔ㄦ乼ree鍥俱?BR>涓婇潰鐨勮繖縐嶅疄鐜版槸鐢╦sp+javascript瀹炵幇銆備篃鍙互鐢▁ml+xsl鏉ュ疄鐜般備笉鏄繀瑕侊紝鍙槸鍙互璁╂柊鎵嬩篃浜嗚В涓涓嬪叧浜巟ml鐨勫簲鐢ㄣ?)
      姣斿鎴戜滑宸茬粡鎴愬姛鎶婃暟鎹簱鐨勬暟鎹鍑烘垚xml鏍煎紡銆備唬鐮佸涓嬶細
      <?xml version="1.0" ?>
      <?xml:stylesheet type="text/xsl" href="ttx2.xsl" ?>
      <table name="cm_tree">
      <col id="1" label="闂嗗棗媧熼弬浼存" parentid="29" target="_blank" url="/zdtadmin/default.jsp"></col>
      <col id="2" label="闂嗗棗媧熺憰渚妞? parentid="1" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=2"></col>
      <col id="3" label="緙佺厧鎮庢穱鈩冧紖" parentid="1" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=3"></col>
      <col id="4" label="閺璺ㄧ摜濞夋洝顫? parentid="29" target="_blank" url="/zdtadmin/default.jsp"></col>
      <col id="5" label="濞夋洖綬ュ▔鏇☆潐" parentid="4" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=5"></col>
      <col id="7" label="閺璺ㄧ摜閻梻鈹? parentid="4" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=7"></col>
      <col id="8" label="閻㈢喍楠囩紒蹇氭儉" parentid="29" target="_blank" url="/zdtadmin/default.jsp"></col>
      <col id="9" label="鐎瑰鍙忛悽鐔墮獓" parentid="8" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=9"></col>
      <col id="10" label="緙佸繗鎯閸斻劍鈧? parentid="8" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=10"></col>
      <col id="11" label="瀹搞儳鈻煎楦款啎" parentid="29" target="_blank" url="/zdtadmin/default.jsp"></col>
      <col id="12" label="閻忣偆鏁稿銉р柤" parentid="11" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=12"></col>
      <col id="13" label="濮樺鏁稿銉р柤" parentid="11" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=13"></col>
      <col id="14" label="閺嶅摜鏁稿銉р柤" parentid="11" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=14"></col>
      <col id="17" label="閸ヤ粙妾崥鍫滅稊" parentid="29" target="_blank" url="/zdtadmin/default.jsp"></col>
      <col id="19" label="閸氬牅綞旈崝銊︹偓? parentid="17" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=19"></col>
      <col id="20" label="嫻間椒絎熼弬鍥у" parentid="29" target="_blank" url="/zdtadmin/default.jsp"></col>
      <col id="22" label="緇墽顨i弬鍥ㄦ" parentid="20" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=22"></col>
      <col id="24" label="閸忔湹綺穱鈩冧紖" parentid="29" target="_blank" url="/zdtadmin/default.jsp"></col>
      <col id="25" label="婢垛晜鐨墊0鍕Г" parentid="24" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=25"></col>
      <col id="26" label="嫻間椒絎熼弬鍥у閸斻劍鈧? parentid="20" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=26"></col>
      <col id="27" label="閺傚洤瀵插ú璇插З" parentid="20" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=27"></col>
      <col id="29" label="閸愬懎顔愮粻錛勬倞" parentid="0" target="_blank" url="/zdtadmin/default.jsp"></col>
      <col id="31" label="閺嶅繒媧扮紒瀛樺Б" parentid="0" target="_blank" url="/zdtadmin/treeadmin/tree_edit.jsp"></col>
      <col id="32" label="鐟欐帟澹婄紒瀛樺Б" parentid="0" target="_blank" url="/zdtadmin/default.jsp"></col>
      <col id="41" label="婢舵氨顫掓禍褌絎? parentid="8" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=41"></col>
      <col id="42" label="娑撳﹤绔墮崗顒寰? parentid="8" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=42"></col>
      <col id="44" label="濞h濮炵憴鎺曞" parentid="32" target="_blank" url="/zdtadmin/peradmin/role_edit.jsp"></col>
      <col id="45" label="鐟欐帟澹?閺嶅繒媧? parentid="32" target="_blank" url="/zdtadmin/peradmin/role_tree.jsp"></col>
      <col id="46" label="鐟欐帟澹?閻€劍鍩? parentid="32" target="_blank" url="/zdtadmin/peradmin/role_user.jsp"></col>
      <col id="47" label="閺傚洣嬈㈡稉瀣祰" parentid="24" target="_blank" url="/zdtadmin/newsadmin/down_list.jsp"></col>
      <col id="48" label="閻€劍鍩涚粻錛勬倞" parentid="0" target="_blank" url="/zdtadmin/useradmin/user_list.jsp"></col>
      <col id="51" label="娑撴挻鐖? parentid="29" target="_blank" url="/zdtadmin/default.jsp"></col>
      <col id="52" label="閻㈤潧濮忕粔鎴炴珮" parentid="51" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=52"></col>
      <col id="53" label="閸╄櫣顢呯粻錛勬倞楠? parentid="51" target="_blank" url="/zdtadmin/newsadmin/list.jsp?tree_id=53"></col></table>
      鍏朵腑涔辯爜鏄洜涓虹敤鍒頒簡utf8緙栫爜銆傚氨鏄妭鐐瑰悕銆傚湪ie涓彲浠ユ甯告樉紺恒?BR>鐒跺悗鎴戜滑鍐欎竴涓獂sl鏉ヨ〃紺哄畠錛屾妸瀹冭漿鎴愪竴涓猦tml鏉ユ樉紺恒?BR>"<?xml:stylesheet type="text/xsl" href="ttx2.xsl" ?>"鎸囧畾浜嗘垜浠鐢?BR>ttx2.xsl鏉ヨ〃紺哄畠銆備唬鐮佸涓嬶細

      <?xml version='1.0' ?>
      <xsl:stylesheet version='1.0' xmlns:xsl="http://www.w3.org/TR/WD-xsl"; >
      <xsl:template match="/">
      <html>
      <head>
      <title>Tree test</title>
      </head>
      <body>
      <script type="text/javascript" src="include/dtree.js"></script>
      <script type="text/javascript">
      d=new dTree('d');
      d.add(0,-1,"list");
      <xsl:apply-templates select="/table"/>
      document錛巜rite(d);
      </script>
      </body>
      </html>
      </xsl:template>
      <xsl:template match="/table">
      <xsl:for-each select="col">
      d.add(<xsl:value-of select="@id"/>,<xsl:value-of select="@parentid"/>,'<xsl:value-of select="@label"/>','<xsl:value-of select="@url"/>','<xsl:value-of select="@label"/>','<xsl:value-of select="@target"/>');
      </xsl:for-each>
      </xsl:template>
      </xsl:stylesheet>
      榪欎簺渚嬪瓙鍦ㄦ墦鍖呮枃浠墮噷鍙互鎵懼埌銆傛垜鍦↖E 6.0涓嬫祴璇曢氳繃銆?BR>鎴戝湪xsl鏂歸潰涔熷彧鏄簡瑙g毊姣涖傛墍浠ョ敤鍒扮殑涔熷彧鏄緢鍩虹鐨勪笢瑗褲傚笇鏈涙湁浜鴻兘鍐欎竴浜涘叧浜巟ml+xsl鏂歸潰鐨勪笓涓氱殑鏂囩珷銆俕_^
      涓婇潰璇寸殑涓滆タ鏄痓/s緇撴瀯涓媡ree鍥劇殑琛ㄧ幇灞傜殑瀹炵幇銆傚鏋滄槸閫昏緫涓婄殑緇撴瀯鍙樻洿鍜屽畾涔夛紝灝變笉鑳介潬jsp+javascript鏉ュ疄鐜頒簡銆傛垜寤鴻鐨勮В鍐蟲柟娉曟槸鐢╰ree鍨媥ml鏉ュ疄鐜?濡傛灉鐩存帴鎿嶄綔鏁版嵁搴撶殑璇濓紝瑕侀掑綊騫惰淇濊瘉緇撴瀯瀹屾暣鎬э紝铏界劧鑳藉疄鐜頒絾鏄彲鑳戒細寰堝鏉傦紝騫朵笖鏁堝姏姣旇緝浣庛?tree鍨媥ml鏉ュ疄鐜?鍙互鍙傝?A target=_blank>java&xml蹇冨緱(涓?.
      涓婇潰灝辨槸鑷繁鍦═ree鍨嬬粨鏋?nbsp;鏁版嵁-緇撴瀯緇存姢-緇撴瀯浜や簰-琛ㄧ幇 涓婅嚜宸辯殑鐞嗚В銆傚綋鐒惰繕鏈夊緢澶氫笉瀹屽杽鐨勫湴鏂廣倊_~ 甯屾湜鑳界粰澶у涓鐐瑰府鍔╂垨鍚ず銆?/FONT>

      鍙備笌璁哄潧璁ㄨ:http://www.matrix.org.cn/forum.asp
      鏇村鎶鏈枃绔?http://www.matrix.org.cn/article.asp
      Matrix java闂ㄦ埛:http://www.matrix.org.cn 鍘熸枃鍦板潃錛?A >http://www.matrix.org.cn/article/335.html


      絎ㄧ 2005-03-31 14:08 鍙戣〃璇勮
      ]]>
      鍦ㄧ嚎緙栬緫鍣ㄤ互鍙婂紑婧愰」鐩摼鎺ョ瓑絳?/title><link>http://www.tkk7.com/kapok/archive/2005/03/31/2650.html</link><dc:creator>絎ㄧ</dc:creator><author>絎ㄧ</author><pubDate>Thu, 31 Mar 2005 05:19:00 GMT</pubDate><guid>http://www.tkk7.com/kapok/archive/2005/03/31/2650.html</guid><wfw:comment>http://www.tkk7.com/kapok/comments/2650.html</wfw:comment><comments>http://www.tkk7.com/kapok/archive/2005/03/31/2650.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kapok/comments/commentRss/2650.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kapok/services/trackbacks/2650.html</trackback:ping><description><![CDATA[1.<BR>鍦ㄧ嚎緙栬緫鍣?<A ><BR>   1.1<BR>http://www.fckeditor.net/</A><BR>         鐩墠鏉ヨ錛屾垜瀵笷CK鐨勬劅瑙夎繕涓嶉敊銆?BR>         鐩稿叧閾炬帴錛?A >http://www.chinaunix.net/jh/27/435736.html</A><BR>         <A >http://www.donews.net</A>濂藉儚閲囩敤鐨勫氨鏄繖涓湪綰跨紪杈戝櫒銆?BR> <P>褰撳墠FCKeditor瀵笽E鐨勬敮鎸佸緢濂斤紝涓嶈繃鍦∕ozilla Firefox涓笉鑳芥甯稿伐浣溿備粠瀹樻柟緗戠珯涓婂緱鍒扮殑娑堟伅琛ㄦ槑FCKeditor鐨勫紑鍙戝皬緇勬鍦ㄥ疄鐜板叾瀵筂ozilla鐨勬敮鎸併?BR><A >http://www.lividecay.org/doc_view.php?doc_id=1123</A><BR><BR><BR><A >http://www.redsaga.com/mambo/content/view/12/2/</A></P> <P>鍦╦sp涓嬩嬌鐢‵CKeditor鏄潪甯稿鏄撶殑錛?鍦‵CKeditor鐨勮〃涓甫鏈変竴涓湪JSP涓嬩嬌鐢═aglib錛岄氳繃璋冪敤榪欎釜taglib錛?寰堝鏄撲嬌鐢‵CKeditor錛?涓嬮潰灝辯畝鍗曡涓涓嬪畠鐨勪嬌鐢?BR><STRONG>FCKeditor鍦‵uture浣跨敤鎸囧崡</STRONG></P> <OL> <LI>鍦╦sp鍙互鐩存帴璋冪敤FCKeditor鎻愪緵鐨則ag錛?寮曞叆/WEB-INF/FCKeditor.tld灝卞彲浠ヤ嬌鐢ㄤ簡 <LI>FCKeditor涓璭ditor tag涓殑灞炴т嬌鐢? <LI>id鏄榪欎釜tag鐨勫敮涓鏍囪瘑錛屽湪鎻愪氦琛ㄥ崟浠ュ悗錛?鍙互閫氳繃榪欎釜id瀹氫箟鐨勫弬鏁板悕寰楀埌緙栬緫鍚庣敓鎴愮殑鍐呭錛屽鏋滃湪涓涓〉闈腑瑕佽皟鐢ㄥ涓猣ckeditor錛宨d鍊間笉鑳介噸澶? <LI>canUpload琛ㄧず鏄惁鑳戒笂杞藉浘鐗? <LI>canBrowse琛ㄧず鏄惁鑳芥祻瑙堝凡涓婅澆鐨勫浘鐗? <LI>toolbarSet琛ㄧず宸ュ叿鏍忕殑綾誨瀷錛?榪欓噷鐨勭被鍨嬪彲浠ュ湪/fckeditor/js/fck_config.js涓畾涔? <LI>width鏄紪杈戞鐨勫搴? <LI>height鏄紪杈戞鐨勯珮搴?/LI></OL> <P>toolbarSet鐨勫畾涔夋槸闈炲父瀹規槗鐨勶紝 鍦‵CKeditor涓敤鍒扮殑鎵鏈夊姛鑳芥寜閽鏄湁鍞竴鐨勫悕縐扮殑錛?榪欎釜鍚嶇О浣犲彲浠ュ湪FCKeditor甯姪鏂囦歡鎴栬?fckeditor/js/fck_config.js涓畾涔夌殑Default toolbarSet涓壘鍒?<BR><BR>   1.2<BR>      <A >http://www.freetextbox.com/</A> 涓嶈繃濂藉儚涓嶆敮鎸乯sp鍟?BR><BR>Javascript瀹炵幇鐨?BR><A >http://tinymce.moxiecode.com/</A><BR><BR><BR>2.<BR>涓涓湪綰垮瓧鍏?<BR><A >http://livid.3322.org/lividict/livid.html</A><BR><BR><BR>3.<BR>寮婧愮殑鍩轟簬php鐨勯」鐩細<BR><A >http://xoops.org.cn/modules/wfdownloads/singlefile.php?cid=4&lid=222</A><BR><A >http://xoops.org.cn/modules/wfdownloads/topten.php?list=hit</A><BR><BR><BR><BR>4.<BR><A >http://forum.javaeye.com/viewtopic.php?t=2047&highlight=cvs</A><BR><A >http://forum.javaeye.com/viewtopic.php?t=8360&highlight=cvs</A><BR><A >http://sourceforge.net/cvs/?group_id=94626</A><BR><BR><BR>5.<BR><A >http://www.blog.edu.cn/blog.asp?name=yonghui</A><BR><A >http://www.magnolia.info/en/community.html</A><BR><BR>6.<BR><A >http://duduwolf.winzheng.com/</A><BR><A >http://www.bris.ac.uk/is/projects/cms/ttw/ttw.html</A><BR><A >http://www.aine.be/aynhtml/</A><BR><BR><BR>6.<BR><A >http://www.jdsl.org/</A><BR><A >http://www.cmswiki.com/tiki-index.php?page=JSR170</A><BR><A >http://jsr170tools.day.com/crx/index.jsp</A><BR><BR><BR>7.<BR>欏圭洰綆$悊錛?BR><A >http://www.codeproject.com/tools/ToDoList2.asp</A><BR><A >http://www.moon-soft.com/doc/45036.htm</A><BR><A >http://www.moon-soft.com/doc/45036.htm</A><BR><A >http://www.neokeen.com/mornlee/2005/02/23/1109168404234.html</A><BR><A >http://cosoft.org.cn/forum/forum.php?forum_id=6559</A><BR><A >http://blog.csdn.net/kasam/archive/2004/12/30/234644.aspx</A><BR><A >http://www.redsoftfactory.com/chinese/opensource/opensource.html</A><BR><A >http://forum.javaeye.com/viewtopic.php?t=2300</A><BR><BR><BR><A >http://forum.javaeye.com/viewtopic.php?t=8360</A><BR><BR><BR>8銆?BR><BR><BR><A >http://java-source.net/open-source/content-managment-systems</A></P><img src ="http://www.tkk7.com/kapok/aggbug/2650.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kapok/" target="_blank">絎ㄧ</a> 2005-03-31 13:19 <a href="http://www.tkk7.com/kapok/archive/2005/03/31/2650.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://goldwellib.com" target="_blank">亚洲av乱码中文一区二区三区</a>| <a href="http://zjjtejia.com" target="_blank">WWW国产亚洲精品久久麻豆</a>| <a href="http://gttest5.com" target="_blank">一级做a爱片特黄在线观看免费看</a>| <a href="http://yiqigxfc.com" target="_blank">日本免费精品一区二区三区</a>| <a href="http://ljdst.com" target="_blank">国产精品视频免费一区二区</a>| <a href="http://yisousou.com" target="_blank">久久久久国产成人精品亚洲午夜</a>| <a href="http://0755host.com" target="_blank">噜噜噜亚洲色成人网站</a>| <a href="http://shenghe228.com" target="_blank">日本一卡精品视频免费</a>| <a href="http://spvec.com" target="_blank">亚洲av一综合av一区</a>| <a href="http://www79909c.com" target="_blank">亚洲第一综合天堂另类专</a>| <a href="http://ocn888.com" target="_blank">麻豆精品国产免费观看</a>| <a href="http://502274.com" target="_blank">久久91亚洲人成电影网站</a>| <a href="http://23usxx.com" target="_blank">亚洲精品免费视频</a>| <a href="http://yeshenghuowang.com" target="_blank">亚洲乱码一二三四区麻豆</a>| <a href="http://4438xa48.com" target="_blank">最近中文字幕免费大全</a>| <a href="http://quxx10.com" target="_blank">午夜影视日本亚洲欧洲精品一区</a>| <a href="http://wwwkckc.com" target="_blank">羞羞视频免费网站含羞草</a>| <a href="http://mangaou.com" target="_blank">免费观看无遮挡www的视频</a>| <a href="http://yu388.com" target="_blank">色天使亚洲综合在线观看</a>| <a href="http://daohang123456.com" target="_blank">成人午夜18免费看</a>| <a href="http://wua72.com" target="_blank">有码人妻在线免费看片</a>| <a href="http://dqmovie.com" target="_blank">国产综合精品久久亚洲</a>| <a href="http://jldledu.com" target="_blank">先锋影音资源片午夜在线观看视频免费播放 </a>| <a href="http://www-135888.com" target="_blank">亚洲成AV人片高潮喷水</a>| <a href="http://12345ww.com" target="_blank">免费观看国产精品</a>| <a href="http://chinashineway.com" target="_blank">中文字幕一区二区三区免费视频</a>| <a href="http://fanhaogo.com" target="_blank">亚洲AV无码一区二区三区系列</a>| <a href="http://df8848.com" target="_blank">222www在线观看免费</a>| <a href="http://www97544.com" target="_blank">亚洲精品V天堂中文字幕</a>| <a href="http://grjeans.com" target="_blank">中文字幕无码精品亚洲资源网</a>| <a href="http://123470c.com" target="_blank">99免费观看视频</a>| <a href="http://cnlawedu.com" target="_blank">亚洲狠狠色丁香婷婷综合</a>| <a href="http://mallmirror.com" target="_blank">亚洲毛片av日韩av无码</a>| <a href="http://xj47777.com" target="_blank">久久免费看少妇高潮V片特黄</a>| <a href="http://zz1965.com" target="_blank">亚洲一区精品视频在线</a>| <a href="http://71caoxee.com" target="_blank">亚洲国产午夜福利在线播放</a>| <a href="http://njchxf.com" target="_blank">免费无码成人AV在线播放不卡</a>| <a href="http://www-959kj.com" target="_blank">亚洲熟女www一区二区三区</a>| <a href="http://aa77cc.com" target="_blank">77777亚洲午夜久久多人</a>| <a href="http://hbgksy.com" target="_blank">日本一区二区三区免费高清</a>| <a href="http://xass1.com" target="_blank">人妻免费久久久久久久了</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>