您的位置:首页 > Web前端 > JavaScript

json格式的数据绑定到listview上的一些操作

2012-11-08 17:08 603 查看
功能描述:json格式的字符串——>listview显示(数据操作)——> json格式的字符串

具体代码如下:

//传入字符串:

#region:序列化字符串

string jsonData = @"{
'Results':[
{
'Client':'13-96-D8-6B-48-83-FC-A3',
'Ip':'192.168.1.150',
'Port':'51030',
'Protocol':'1',
'PackId:':98,
'AccessTime':'2012-11-05 17:49:16'
},
{
'Client':'13-96-D8-6B-48-83-FC-A3',
'Ip':'192.168.1.151',
'Port':'51031',
'Protocol':'2',
'PackId:':99,
'AccessTime':'2012-11-05 17:49:16'
},
{
'Client':'13-96-D8-6B-48-83-FC-A3',
'Ip':'192.168.1.152',
'Port':'51032',
'Protocol':'3',
'PackId:':100,
'AccessTime':'2012-11-05 17:49:16'
}]
}";

ResultData rd = JsonConvert.DeserializeObject<ResultData>(jsonData);
if (null == rd)
{
MessageBox.Show("反序列化失败.");
return;
}

#endregion

//创建实体类

public class CustomerServ
{
public string Client { get; set; }
public string Ip { get; set; }
public string Port { get; set; }
public string Protocol { get; set; }
public int PackId { get; set; }
public DateTime AccessTime{ get; set; }
}

public class ResultData
{
public List<CustomerServ> Results { get; set; }
}

/// <summary>
/// Load的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Main_Load(object sender, EventArgs e)
{

#region 给listview加表头:
lvList.Columns.AddRange(new ColumnHeader[] {
new ColumnHeader(){ Name="Client",Text="Client",Width=100},
new ColumnHeader(){ Name="Ip",Text="Ip地址",Width=100},
new ColumnHeader(){ Name="Port",Text="Port",Width=100},
new ColumnHeader(){ Name="Protocol",Text="Protocol",Width=100},
new ColumnHeader(){ Name="PackId",Text="AccessTime",Width=100},
new ColumnHeader(){ Name="AccessTime",Text="AccessTime",Width=100},
});
//选中一行
lvList.FullRowSelect = true;
#endregion
}

#region 把序列化后的数据显示到listview上:
lvList.Items.Clear();
foreach (CustomerServ result in rd.Results)
{
var lvi = new ListViewItem(result.Client);
//lvi.SubItems.Add(result.Client);
lvi.SubItems.Add(result.Ip);
lvi.SubItems.Add(result.Port.ToString());
lvi.SubItems.Add(result.Protocol);
lvi.SubItems.Add(result.PackId.ToString());
lvi.SubItems.Add(result.AccessTime.ToString("yyyy-MM-dd HH:mm:ss"));
lvList.Items.Add(lvi);
}

/// <summary>
/// 行单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void lvList_SelectedIndexChanged(object sender, EventArgs e)
{
#region 单击行读取行数据:

if (this.lvList.SelectedItems.Count > 0)
{
txtClient.Text = this.lvList.SelectedItems[0].SubItems[0].Text;
txtIP.Text = this.lvList.SelectedItems[0].SubItems[1].Text;
txtPort.Text = this.lvList.SelectedItems[0].SubItems[2].Text;
txtProtocol.Text = this.lvList.SelectedItems[0].SubItems[3].Text;
txtPackId.Text = this.lvList.SelectedItems[0].SubItems[4].Text;
txtAccessTime.Text = this.lvList.SelectedItems[0].SubItems[5].Text;
}

#endregion
}

/// <summary>
/// 添加或修改数据到listview上
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOK_Click(object sender, EventArgs e)
{
#region 添加数据到listview上

TextBox t = null;
bool flag = false;
foreach (Control crl in grpDeil.Controls)
{
t = crl as TextBox;
if (t != null)
{
if (string.IsNullOrEmpty(t.Text))
{
flag = true;
}
}
}
if (flag)
{
MessageBox.Show("信息不完成");
}
else
{
CustomerServ r = new CustomerServ();
r.Client = this.txtClient.Text;
r.Ip = this.txtIP.Text;
r.Port = this.txtPort.Text;
r.Protocol = this.txtProtocol.Text;
r.PackId = Convert.ToInt32(this.txtPackId.Text);
r.AccessTime = Convert.ToDateTime(this.txtAccessTime.Text);

if (lvList.SelectedItems.Count > 0)
{
lvList.SelectedItems[0].SubItems[1].Text = r.Ip;
lvList.SelectedItems[0].SubItems[2].Text = r.Port.ToString();
lvList.SelectedItems[0].SubItems[3].Text = r.Protocol;
lvList.SelectedItems[0].SubItems[4].Text = r.PackId.ToString();
lvList.SelectedItems[0].SubItems[5].Text = r.AccessTime.ToString("yyyy-MM-dd HH:mm:ss");
}
else
{
var lvi = new ListViewItem(r.Client);
//lvi.SubItems.Add(result.Client);
lvi.SubItems.Add(r.Ip);
lvi.SubItems.Add(r.Port.ToString());
lvi.SubItems.Add(r.Protocol);
lvi.SubItems.Add(r.PackId.ToString());
lvi.SubItems.Add(r.AccessTime.ToString("yyyy-MM-dd HH:mm:ss"));
lvList.Items.Add(lvi);
}

}
if (lvList.SelectedItems.Count > 0)
{
lvList.SelectedItems.Clear();
}

#endregion

ClearText();
}

/// <summary>
/// 遍历listview,把数据转换成json格式的字符串
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnInsert_Click(object sender, EventArgs e)
{
#region 遍历listview,把数据转换成json格式的集合:
List<CustomerServ> m_CustomerServList = new List<CustomerServ>();
foreach (ListViewItem item in lvList.Items)
{
m_CustomerServList.Add(new CustomerServ()
{
Client = item.SubItems[0].Text,
Ip = item.SubItems[1].Text,
Port = item.SubItems[2].Text,
Protocol = item.SubItems[3].Text,
PackId = Convert.ToInt32(item.SubItems[4].Text),
AccessTime = Convert.ToDateTime(item.SubItems[5].Text)
});
}
//Json序列化时,用可选参数Formatting.Indented生成良好的显示格式,可读性更好。另一方面,Formatting.None会跳过不必要的空格和换行符,让Json的结果更小。生成的显示格式更加紧凑,也许效率更高。
string resultString = JsonConvert.SerializeObject(m_CustomerServList, Formatting.Indented);
MessageBox.Show(resultString);
#endregion
}

/// <summary>
/// 删除选中行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDelete_Click(object sender, EventArgs e)
{
//获取当前选中行的ID
if (this.lvList.SelectedItems.Count > 0)
{
lvList.Items.Remove(this.lvList.SelectedItems[0]);
}
else
{
MessageBox.Show("请先选中要删除的行");
}

}

//清空grpDeil里所有TextBox的值
public void ClearText()
{
foreach (Control c in grpDeil.Controls)
{
if (c is TextBox)
{
c.Text = "";
}
}
}
#endregion

初学编程,望赐教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: