85 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Text;
 | |
| using System.Data;
 | |
| using DCSoft.Writer.Data;
 | |
| using System.Data.SqlClient;
 | |
| using HelperDB;
 | |
| 
 | |
| namespace DocumentManagement
 | |
| {
 | |
|     /// <summary>
 | |
|     /// 自定义的加载知识节点下拉列表项目的类型
 | |
|     /// </summary>
 | |
|     /// <remarks></remarks>
 | |
|     public class MyListItemsProvider : DCSoft.Writer.Data.IListItemsProvider
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// 初始化对象
 | |
|         /// </summary>
 | |
|         public MyListItemsProvider()
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         public  ListItemCollection GetListItems(ListItemsEventArgs args)
 | |
|         {
 | |
|             if (args.KBEntry != null && args.KBEntry.Style == KBEntryStyle.ListSQL)
 | |
|             {
 | |
|                 string sql = args.KBEntry.Value;
 | |
|                 if (string.IsNullOrEmpty(sql) == false)
 | |
|                 {
 | |
|                     IDataReader reader = DbHelperSQL.GetDataReader(sql);
 | |
|                     ListItemCollection list = CreateList(reader);
 | |
|                     reader.Close();
 | |
|                     return list;
 | |
|                 }//if
 | |
|             }//if
 | |
| 
 | |
|             return null;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 根据读取的数据生成项目列表
 | |
|         /// </summary>
 | |
|         /// <param name="reader">数据读取器</param>
 | |
|         /// <returns>项目列表</returns>
 | |
|         private ListItemCollection CreateList(IDataReader reader)
 | |
|         {
 | |
|             int fieldCount = reader.FieldCount;
 | |
|             if (fieldCount == 0)
 | |
|             {
 | |
|                 return null;
 | |
|             }
 | |
|             ListItemCollection list = new ListItemCollection();
 | |
|             while (reader.Read())
 | |
|             {
 | |
|                 ListItem item = new ListItem();
 | |
|                 if (reader.IsDBNull(0) == false)
 | |
|                 {
 | |
|                     item.Text = Convert.ToString(reader.GetValue(0));
 | |
|                 }
 | |
|                 if (fieldCount == 1)
 | |
|                 {
 | |
|                     item.Value = item.Text;
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     if (reader.IsDBNull(1) == false)
 | |
|                     {
 | |
|                         item.Value = Convert.ToString(reader.GetValue(1));
 | |
|                     }
 | |
|                 }
 | |
|                 if (fieldCount >= 3)
 | |
|                 {
 | |
|                     if (reader.IsDBNull(2) == false)
 | |
|                     {
 | |
|                         item.SpellCode = Convert.ToString(reader.GetValue(2));
 | |
|                     }
 | |
|                 }
 | |
|                 list.Add(item);
 | |
|             }//while
 | |
|             return list;
 | |
|         }
 | |
|     }
 | |
| }
 |