using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using DCSoft.Writer.Data;
using System.Data.SqlClient;
using HelperDB;
namespace DocumentManagement
{
    /// 
    /// 自定义的加载知识节点下拉列表项目的类型
    /// 
    /// 
    public class MyListItemsProvider : DCSoft.Writer.Data.IListItemsProvider
    {
        /// 
        /// 初始化对象
        /// 
        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;
        }
        /// 
        /// 根据读取的数据生成项目列表
        /// 
        /// 数据读取器
        /// 项目列表
        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;
        }
    }
}