设置DevExpress的gridcontrol的数据并显示

使用了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.youkuaiyun.com/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.youkuaiyun.com/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;绑定数据源,最后在处理数据的过程中将数据一条条添加到表格中即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝之赟

谢谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值