在WinCE开发中遇到了问题,如何为DataGrid绑定一列CheckBox列,使数据可以多选全选操作!经过试验发现在WinCE中DataGrid的功能比较弱,无限实现自定义控件!后来发现ListView可以增加一个选择按钮的属性,就改用将ListView改进,使之像GridView一样,而且可以实现全选反选功能! 代码如下:
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace SmartDeviceProject1
{
public partial class OutTop : Form
{
#region 实现表格线的API函数 没有到更加方便的办法,就用这个来实现了
private const int LVM_GETEXTENDEDLISTVIEWSTYLE = 0x1037;
private const int LVM_SETEXTENDEDLISTVIEWSTYLE = 0x1036;
private const int LVS_EX_GRIDLINES = 0x1;
[System.Runtime.InteropServices.DllImport("coredll.dll")]
private static extern int SendMessageW(int hWnd, int wMsg, int wParam, int lParam);
[System.Runtime.InteropServices.DllImport("coredll.dll")]
private static extern int GetFocus();
public static void SetGridLines(System.Windows.Forms.ListView lvw)
{
lvw.Focus();
int hWnd = GetFocus();
int extendedStyle = SendMessageW(hWnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
extendedStyle |= LVS_EX_GRIDLINES;
SendMessageW(hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, extendedStyle);
}
#endregion
//引用WebServer服务
DataAcess.Service1 dataAcess = new SmartDeviceProject1.DataAcess.Service1();
public OutTop()
{
InitializeComponent();
}
/// <summary>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OutTop_Load(object sender, EventArgs e)
{
//获取数据集
DataSet ds = dataAcess.GetDataSet("select User_Name,User_Sex,User_ID from T_User", null, false, "192.168.1.15", "sa", "211314");
//循环绑定将数据绑定到ListView中去
foreach (DataRow row in ds.Tables[0].Rows)
{
ListViewItem listViewItem = new ListViewItem(row[0].ToString());
listViewItem.SubItems.Add(row[1].ToString());
listViewItem.SubItems.Add(row[2].ToString());
listView1.Items.Add(listViewItem);
}
//表格线的设置方法
SetGridLines(listView1);权重计算
}
荷香散尽/// <summary>
/// 全选反选按钮事件
/// </summary>
/// <param name="sender"></param>
/// llr<param name="e"></param>
private void checkBox1_CheckStateChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
foreach (ListViewItem item in listView1.Items)
自然肌理
{
item.Checked = true;
}
}
else
{
foreach (ListViewItem item in listView1.Items)
{
item.Checked = false;
}
}
}
/// <summary>
/// 稻草秸秆按钮事件 点击该按钮可以弹出所有选择列的ID
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)对口升学
{
//获取隐藏列ID的值
foreach (ListViewItem item in listView1.Items)
{
if(item.Checked)
{
MessageBox.Show(item.SubItems[2].Text);
}
}
}
}
}