Ejemplo n.º 1
0
        // 获得一个列可用的全部 sort style
        public List <ColumnSortStyle> GetAllSortStyle(ListView list, int nColumn)
        {
            List <ColumnSortStyle> styles = new List <ColumnSortStyle>();

            styles.Add(ColumnSortStyle.None);        // 没有
            styles.Add(ColumnSortStyle.LeftAlign);   // 左对齐字符串
            styles.Add(ColumnSortStyle.RightAlign);  // 右对齐字符串
            styles.Add(ColumnSortStyle.RecPath);     // 记录路径。例如“中文图书/1”,以'/'为界,右边部分当作数字值排序。或者“localhost/中文图书/ctlno/1”
            styles.Add(ColumnSortStyle.LongRecPath); // 记录路径。例如“中文图书/1 @本地服务器”

            // 寻找标题 .Tag 中的定义
            if (nColumn < list.Columns.Count)
            {
                ColumnHeader   header = list.Columns[nColumn];
                ColumnProperty prop   = (ColumnProperty)header.Tag;
                if (prop != null)
                {
                    if (string.IsNullOrEmpty(prop.Type) == false)
                    {
                        ColumnSortStyle default_style = new ColumnSortStyle(prop.Type);
                        if (styles.IndexOf(default_style) == -1)
                        {
                            styles.Add(default_style);
                        }
                    }
                }
            }
            return(styles);
        }
Ejemplo n.º 2
0
        private void listView_browse_ColumnClick(object sender, ColumnClickEventArgs e)
        {
            int nClickColumn = e.Column;

            ColumnSortStyle sortStyle = ColumnSortStyle.LeftAlign;

            // 第一列为记录路径,排序风格特殊
            if (nClickColumn == 0)
            {
                sortStyle = ColumnSortStyle.RecPath;
            }
            else if (nClickColumn == 1)
            {
                sortStyle = ColumnSortStyle.RightAlign;
            }

            this.SortColumns.SetFirstColumn(nClickColumn,
                                            sortStyle,
                                            this.listView_browse.Columns,
                                            true);

            // 排序
            this.listView_browse.ListViewItemSorter = new SortColumnsComparer(this.SortColumns);

            this.listView_browse.ListViewItemSorter = null;
        }
Ejemplo n.º 3
0
        public ColumnSortStyle GetSortStyle(ListView list, int nColumn)
        {
            ColumnSortStyle result = null;

            if (this.SortStyles.Count <= nColumn)
            {
            }
            else
            {
                result = SortStyles[nColumn];
            }

            if (result == null || result == ColumnSortStyle.None)
            {
                // 寻找标题 .Tag 中的定义
                if (nColumn < list.Columns.Count)
                {
                    ColumnHeader   header = list.Columns[nColumn];
                    ColumnProperty prop   = (ColumnProperty)header.Tag;
                    if (prop != null)
                    {
                        if (string.IsNullOrEmpty(prop.Type) == false)
                        {
                            return(new ColumnSortStyle(prop.Type));
                        }
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 4
0
        static string GetSortStyleCaption(ColumnSortStyle style)
        {
            string strName = style.Name;

            if (string.IsNullOrEmpty(strName) == true)
            {
                return("[None]");
            }

            // 将 call_number 形态转换为 CallNumber 形态
            string[]      parts = strName.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
            StringBuilder text  = new StringBuilder(4096);

            foreach (string s in parts)
            {
                if (string.IsNullOrEmpty(s) == true)
                {
                    continue;
                }

                text.Append(char.ToUpper(s[0]));
                if (s.Length > 1)
                {
                    text.Append(s.Substring(1));
                }
            }

            return(text.ToString());
        }
Ejemplo n.º 5
0
        private void listView_channel_ColumnClick(object sender, ColumnClickEventArgs e)
        {
            int nClickColumn = e.Column;

            ColumnSortStyle sortStyle = ColumnSortStyle.LeftAlign;

            if (nClickColumn == COLUMN_COUNT ||
                nClickColumn == COLUMN_CALLCOUNT)
            {
                sortStyle = ColumnSortStyle.RightAlign;
            }
            else if (nClickColumn == COLUMN_IP)
            {
                sortStyle = ColumnSortStyle.IpAddress;
            }

            this.SortColumns.SetFirstColumn(nClickColumn,
                                            sortStyle,
                                            this.listView_channel.Columns,
                                            true);

            // 排序
            this.listView_channel.ListViewItemSorter = new SortColumnsComparer(this.SortColumns);

            // this.listView1.ListViewItemSorter = null;
        }
Ejemplo n.º 6
0
        private void listView_records_ColumnClick(object sender, ColumnClickEventArgs e)
        {
            int nClickColumn = e.Column;

            ColumnSortStyle sortStyle = ColumnSortStyle.LeftAlign;

            // 第一列为普通字符串,第二列为数字字符串
            if (nClickColumn == 0)
            {
                sortStyle = ColumnSortStyle.LeftAlign;
            }
            else if (nClickColumn == 1)
            {
                sortStyle = ColumnSortStyle.RightAlign;
            }

            this.SortColumns.SetFirstColumn(nClickColumn,
                                            sortStyle,
                                            this.listView_records.Columns,
                                            true);

            // 排序
            this.listView_records.ListViewItemSorter = new SortColumnsComparer(this.SortColumns);
            this.listView_records.ListViewItemSorter = null;
        }
Ejemplo n.º 7
0
        // 响应鼠标右键点击栏目标题的动作,出现上下文菜单
        public static void OnColumnContextMenuClick(ListView list,
                                                    ColumnClickEventArgs e)
        {
            int nClickColumn = e.Column;

            ListViewProperty prop = GetListViewProperty(list);

            if (prop == null)
            {
                throw new Exception("ListView的Tag没有包含ListViewProperty对象");
            }

#if NO
            ColumnSortStyle sortStyle = prop.GetSortStyle(nClickColumn);
            prop.SortColumns.SetFirstColumn(nClickColumn,
                                            sortStyle,
                                            list.Columns,
                                            true);
#endif
            ContextMenuStrip contextMenu = new ContextMenuStrip();

            ToolStripMenuItem menuItem    = null;
            ToolStripMenuItem subMenuItem = null;

            // list.Columns[nClickColumn].Text
            menuItem = new ToolStripMenuItem("设置排序方式");
            contextMenu.Items.Add(menuItem);

            ColumnSortStyle sortStyle = prop.GetSortStyle(list, nClickColumn);
            if (sortStyle == null)
            {
                sortStyle = ColumnSortStyle.None;
            }

            List <ColumnSortStyle> all_styles = prop.GetAllSortStyle(list, nClickColumn);

            foreach (ColumnSortStyle style in all_styles)
            {
                subMenuItem      = new ToolStripMenuItem();
                subMenuItem.Text = GetSortStyleCaption(style);
                SetSortStyleParam param = new SetSortStyleParam();
                param.ColumnIndex  = nClickColumn;
                param.prop         = prop;
                param.Style        = style;
                subMenuItem.Tag    = param;
                subMenuItem.Click += new EventHandler(menu_setSortStyle_Click);
                if (style == sortStyle)
                {
                    subMenuItem.Checked = true;
                }
                menuItem.DropDown.Items.Add(subMenuItem);
            }

            Point p = list.PointToClient(Control.MousePosition);
            contextMenu.Show(list, p);
        }
Ejemplo n.º 8
0
        // 响应点击栏目标题的动作,进行排序
        // parameters:
        //      bClearSorter    是否在排序后清除 sorter 函数
        public static void OnColumnClick(ListView list,
                                         ColumnClickEventArgs e,
                                         bool bClearSorter = true)
        {
            int nClickColumn = e.Column;

            ListViewProperty prop = GetListViewProperty(list);

            if (prop == null)
            {
                throw new Exception("ListView的Tag没有包含ListViewProperty对象");
            }

            // 2013/3/31
            // 如果标题栏没有初始化,则需要先初始化
            if (list.SelectedItems.Count == 0 && list.Items.Count > 0)
            {
                list.Items[0].Selected = true;
                OnSelectedIndexChanged(list,
                                       0,
                                       null);
                list.Items[0].Selected = false;
            }

            ColumnSortStyle sortStyle = prop.GetSortStyle(list, nClickColumn);

            prop.SortColumns.SetFirstColumn(nClickColumn,
                                            sortStyle,
                                            list.Columns,
                                            true);

            // 排序
            SortColumnsComparer sorter = new SortColumnsComparer(prop.SortColumns);

            if (prop.HasCompareColumnEvent() == true)
            {
                sorter.EventCompare += (sender1, e1) =>
                {
                    prop.OnCompareColumn(sender1, e1);
                };
            }
            list.ListViewItemSorter = sorter;

            if (bClearSorter == true)
            {
                list.ListViewItemSorter = null;
            }
        }
Ejemplo n.º 9
0
        public void SetSortStyle(int nColumn, ColumnSortStyle style)
        {
            // 确保元素足够
            while (this.SortStyles.Count < nColumn + 1)
            {
                this.SortStyles.Add(null); // 或者 .None // 缺省的 ColumnSortStyle.LeftAlign
            }

            this.SortStyles[nColumn] = style;

            // 2013/3/27
            // 刷新 SortColumns
            foreach (Column column in this.SortColumns)
            {
                if (column.No == nColumn)
                {
                    column.SortStyle = style;
                }
            }
        }
Ejemplo n.º 10
0
        public void SortCol(int nClickColumn)
        {
            ColumnSortStyle sortStyle = ColumnSortStyle.LeftAlign;

            // 第一列为记录路径,排序风格特殊
            if (nClickColumn == 0)
            {
                sortStyle = ColumnSortStyle.RecPath;
            }

            this.SortColumns1.SetFirstColumn(nClickColumn,
                                             sortStyle,
                                             this.listView_results.Columns,
                                             true);

            // 排序
            this.listView_results.ListViewItemSorter = new SortColumnsComparer(this.SortColumns1);

            this.listView_results.ListViewItemSorter = null;
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 构造函数
        /// </summary>
        public ManagerForm()
        {
            InitializeComponent();

            this.listView_opacDatabases.SmallImageList = this.imageList_opacDatabaseType;
            this.listView_opacDatabases.LargeImageList = this.imageList_opacDatabaseType;

            this.listView_databases.SmallImageList = this.imageList_opacDatabaseType;
            this.listView_databases.LargeImageList = this.imageList_opacDatabaseType;

            this.treeView_opacBrowseFormats.ImageList = this.imageList_opacBrowseFormatType;

            this.treeView_zhongcihao.ImageList = this.imageList_zhongcihao;

            this.treeView_arrangement.ImageList = this.imageList_arrangement;

            ListViewProperty prop = new ListViewProperty();
            this.listView_calendar.Tag = prop;

            ColumnSortStyle style = new ColumnSortStyle("calendar_name");
            style.CompareFunc += new CompareEventHandler(prop_CompareColumn);

            // 第一列特殊,记录路径
            prop.SetSortStyle(0, style);
            //prop.CompareColumn -= new CompareEventHandler(prop_CompareColumn);
            //prop.CompareColumn += new CompareEventHandler(prop_CompareColumn); 

            this.loanPolicyControlWrapper1.LoanPolicyControl.Owner = this;
            this.loanPolicyControlWrapper1.PropertyChanged += new PropertyChangedEventHandler(loanPolicyControlWrapper1_PropertyChanged);

            ListViewProperty prop1 = new ListViewProperty();
            this.listView_location_list.Tag = prop1;

        }
Ejemplo n.º 12
0
        int DoSearch(out string strError)
        {
            strError = "";

            /*
             * string strServerName = "";
             *
             * strServerName = this.textBox_serverName.Text;
             *
             * if (String.IsNullOrEmpty(strServerName) == true)
             * {
             *  // 如果servername text为空,则从发起路径中获得servername
             *  strServerName = GetServerName(this.RecordPath);
             *  if (String.IsNullOrEmpty(strServerName) == true)
             *  {
             *      strError = "在没有指定服务器名的情况下,必须指定发起路径";
             *      return -1;
             *  }
             * }*/

            string strProjectName = "";

            if (this.comboBox_projectName.Text == "" ||
                this.comboBox_projectName.Text == "{default}" ||
                this.comboBox_projectName.Text == "<default>" ||
                this.comboBox_projectName.Text == "<默认>")
            {
                // 获得和一个来源路径相关的缺省查重方案
                string strDatabasePath = "";
                strProjectName = GetDefaultProjectName(this.RecordPath,
                                                       out strDatabasePath);
                if (String.IsNullOrEmpty(strProjectName) == true)
                {
                    strError = "没有定义和发起数据库 '" + strDatabasePath + "' 关联的缺省查重方案,因此无法进行查重...";
                    return(-1);
                }

                this.comboBox_projectName.Text = strProjectName;    // 将实际用到的查重方案名显示出来
            }
            else
            {
                strProjectName = this.comboBox_projectName.Text;
            }

            this.m_nodeProject = this.dom.DocumentElement.SelectSingleNode("//project[@name='" + strProjectName + "']");
            if (this.m_nodeProject == null)
            {
                strError = "没有定义名字为 '" + strProjectName + "' 的查重方案";
                return(-1);
            }

            stop.OnStop += new StopEventHandler(this.DoStop);
            stop.SetMessage("开始检索 ...");
            stop.BeginLoop();

            this.Update();

            this.EnableControls(false);

            this.EventFinish.Reset();
            this.m_bInSearch = true;
            try
            {
                this.ClearDupState(true);
                this.listView_browse.Items.Clear();

                // 列出<project>元素下的所有<database>元素
                XmlNodeList databases = this.m_nodeProject.SelectNodes("database");
                for (int i = 0; i < databases.Count; i++)
                {
                    XmlNode nodeDatabase = databases[i];

                    int nRet = DoOneDatabase(
                        nodeDatabase,
                        out strError);
                    if (nRet == -1)
                    {
                        return(-1);
                    }
                }

                // 排序
                {
                    ColumnSortStyle sortStyle = ColumnSortStyle.RightAlign;

                    this.SortColumns.SetFirstColumn(1,
                                                    sortStyle,
                                                    this.listView_browse.Columns,
                                                    true);

                    this.SortColumns[0].Asc = false;    // 大的在前
                    this.SortColumns.RefreshColumnDisplay(this.listView_browse.Columns);

                    // 排序
                    this.listView_browse.ListViewItemSorter = new SortColumnsComparer(this.SortColumns);
                    this.listView_browse.ListViewItemSorter = null;
                }

                // 显示查重状态
                this.SetDupState();
            }
            finally
            {
                this.EventFinish.Set();
                this.m_bInSearch = false;

                stop.EndLoop();
                stop.OnStop -= new StopEventHandler(this.DoStop);
                stop.Initial("");

                EnableControls(true);
            }

            // 命中数
            return(this.listView_browse.Items.Count);
        }