20181117 V1.0 正式版--- 优化HTTP发包,将http header和body分开发送,在某些情况下可以绕过安全防护。 修复获取数据时,在某些情况下,由于选择列变少,排序列未更新,导致会出现程序排序异常的情况。
115 lines
3.1 KiB
C#
115 lines
3.1 KiB
C#
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using System.Text;
|
||
using System.Windows.Forms;
|
||
|
||
namespace SuperSQLInjection.tools
|
||
{
|
||
class ListViewColumnSorter:IComparer
|
||
{
|
||
/**/
|
||
/// <summary>
|
||
/// 指定按照哪个列排序
|
||
/// </summary>
|
||
private int ColumnToSort;
|
||
/**/
|
||
/// <summary>
|
||
/// 指定排序的方式
|
||
/// </summary>
|
||
public SortOrder OrderOfSort;
|
||
/**/
|
||
/// <summary>
|
||
/// 声明CaseInsensitiveComparer类对象,
|
||
/// 参见ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemCollectionsCaseInsensitiveComparerClassTopic.htm
|
||
/// </summary>
|
||
private CaseInsensitiveComparer ObjectCompare;
|
||
|
||
/**/
|
||
/// <summary>
|
||
/// 构造函数
|
||
/// </summary>
|
||
public ListViewColumnSorter()
|
||
{
|
||
// 默认按第一列排序
|
||
ColumnToSort = 0;
|
||
|
||
// 排序方式为不排序
|
||
OrderOfSort = SortOrder.None;
|
||
|
||
// 初始化CaseInsensitiveComparer类对象
|
||
ObjectCompare = new CaseInsensitiveComparer();
|
||
}
|
||
|
||
/**/
|
||
/// <summary>
|
||
/// 重写IComparer接口.
|
||
/// </summary>
|
||
/// <param name="x">要比较的第一个对象</param>
|
||
/// <param name="y">要比较的第二个对象</param>
|
||
/// <returns>比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>
|
||
public int Compare(object x, object y)
|
||
{
|
||
int compareResult;
|
||
ListViewItem listviewX, listviewY;
|
||
|
||
// 将比较对象转换为ListViewItem对象
|
||
listviewX = (ListViewItem)x;
|
||
listviewY = (ListViewItem)y;
|
||
|
||
// 比较
|
||
compareResult = new MyCopare().Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
|
||
|
||
// 根据上面的比较结果返回正确的比较结果
|
||
if (OrderOfSort == SortOrder.Ascending)
|
||
{
|
||
// 因为是正序排序,所以直接返回结果
|
||
return compareResult;
|
||
}
|
||
else if (OrderOfSort == SortOrder.Descending)
|
||
{
|
||
// 如果是反序排序,所以要取负值再返回
|
||
return (-compareResult);
|
||
}
|
||
else
|
||
{
|
||
// 如果相等返回0
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
/**/
|
||
/// <summary>
|
||
/// 获取或设置按照哪一列排序.
|
||
/// </summary>
|
||
public int SortColumn
|
||
{
|
||
set
|
||
{
|
||
ColumnToSort = value;
|
||
}
|
||
get
|
||
{
|
||
return ColumnToSort;
|
||
}
|
||
}
|
||
|
||
/**/
|
||
/// <summary>
|
||
/// 获取或设置排序方式.
|
||
/// </summary>
|
||
public SortOrder Order
|
||
{
|
||
set
|
||
{
|
||
OrderOfSort = value;
|
||
}
|
||
get
|
||
{
|
||
return OrderOfSort;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|