使用了devExpress的RibbonForm,裏面加了一個gridcontrol用來實現數據的列表顯示,按照網上的說法通過Run Designer先添加列名,但是這種方式我的數據插不進去,不知道爲啥,也懶得找原因了,爲了後期該列名啥的方便就直接代碼中實現了,通過InitDt實現列名添加,注意需要 using System.Data; 通過this.add_data(dt, item)添加數據
在RibbonForm類中初始表格,使用replace是由於數據中有這種大括號包着的數據{****},導致gridcontrol中只顯示{,剩餘的顯示不全
我還加了一個按鈕,由於數據是實時在網上爬的,每按一次按鈕就獲取新的數據進行處理
namespace test
{
public partial class RibbonForm1 : DevExpress.XtraBars.Ribbon.RibbonForm
{
JArray data = null;
string jsondata = null;
DataTable dt = new DataTable();
DataTable dt_Other = new DataTable();
public RibbonForm1()
{
InitializeComponent();
dt = this.InitDt(dt);
dt_Other = this.InitDt(dt_Other);
}
private DataTable InitDt(DataTable dt)
{
dt.Columns.Add("IP", typeof(string));
dt.Columns.Add("Port", typeof(string));
dt.Columns.Add("OS", typeof(string));
·
·
·
·
dt.Columns.Add("Own_Name", typeof(string));
dt.Columns.Add("Own_Email", typeof(string));
dt.Columns.Add("Description", typeof(string));
return dt;
}
//向table中傳數據,由於用的前面文章提到的json解析出來的數據,是JToken格式的
private DataTable add_data(DataTable dt, JToken show_data)
{
dt.Rows.Add(new object[] {show_data["***"],show_data["***"],show_data["***"],show_data["***"].ToString().Replace("{","").Replace("}","").Replace("\r\n","").Trim(),show_data["Country"],show_data["City"]});
// 使用replace是由於數據中有這種大括號包着的數據{****},導致gridcontrol中只顯示{ 剩餘的顯示不全
return dt;
}
private void handle_data(JArray data)
{
foreach (JObject item in data)
{
string[] location = null;
location = Map_ip(item["ip地址"].ToString()); //調用前面文章中https://blog.csdn.net/u010458948/article/details/101508804提到的ip與地理位置轉換
var newJsonObj = JObject.Parse("{\"Country\":\"" + location[0] +"\",\"City\":\"" + location[1] + "\",\"Continent\":\"" + location[2] + "\"}");
item.Add(newJsonObj.Properties());
dt = this.add_data(dt, item);
}
}
private void barButtonItem1_ItemClick(object sender, ItemClickEventArgs e)
{
Spider spider = new Spider(); //前面文章https://blog.csdn.net/u010458948/article/details/101452008的類,需要使用using 前面文章的namespace;
jsondata = spider.Get_detail(); //前面文章的方法
JArray jsonServers = spider.Parse_data(jsondata);
dt.Rows.Clear(); //每次點擊都要重新更新表格,因此先清空
dt_Other.Rows.Clear();
gridControl1.DataSource = dt;
handle_data(jsonServers);
}
}
}
總結一下gridcontrol顯示就是要先在類前面聲明DataTable,然後在界面RibbinForm方法中初始化table,然後在按鈕控制顯示時設置gridControl1.DataSource = dt;綁定數據源,最後在處理數據的過程中將數據一條條添加到表格中即可。