gridview拖动实现多选

  1. //用于记录,鼠标是否已按下

  2.  
  3. bool isMouseDown = false;

  4.  
  5.  
  6.  
  7. //用于鼠标拖动多选,标记是否记录开始行

  8.  
  9. bool isSetStartRow = false;

  10.  
  11.  
  12.  
  13. //用于鼠标拖动多选,记录开始行

  14.  
  15. private int StartRowHandle = -1;

  16.  
  17.  
  18.  
  19. //用于鼠标拖动多选,记录现在行

  20.  
  21. private int CurrentRowHandle = -1;

  22.  
  23.  
  24.  
  25. //用于实现鼠标拖动选择多行功能中的一个方法,对单元格区域进行选中

  26.  
  27. private void SelectRows(int startRow, int endRow)

  28.  
  29. {

  30.  
  31. if (startRow > -1 && endRow > -1)

  32.  
  33. {

  34.  
  35. gridView.BeginSelection();

  36.  
  37. gridView.ClearSelection();

  38.  
  39. gridView.SelectRange(startRow, endRow);

  40.  
  41. gridView.EndSelection();

  42.  
  43. }

  44.  
  45. }

  46.  
  47.  
  48.  
  49. //实现鼠标拖动选择多行 ,鼠标按下事件

  50.  
  51. private void gridView_MouseDown(object sender, MouseEventArgs e)

  52.  
  53. {

  54.  
  55. if (e.Button == MouseButtons.Left)

  56.  
  57. {

  58.  
  59. isMouseDown = true;

  60.  
  61. }

  62.  
  63. }

  64.  
  65.  
  66.  
  67. //实现鼠标拖动选择多行 ,鼠标移动时

  68.  
  69. private void gridView_MouseMove(object sender, MouseEventArgs e)

  70.  
  71. {

  72.  
  73. if (isMouseDown)

  74.  
  75. {

  76.  
  77. GridHitInfo info = gridView.CalcHitInfo(e.X, e.Y);

  78.  
  79.  
  80.  
  81. //如果鼠标落在单元格里

  82.  
  83. if (info.InRow)

  84.  
  85. {

  86.  
  87. if (!isSetStartRow)

  88.  
  89. {

  90.  
  91. StartRowHandle = info.RowHandle;

  92.  
  93. isSetStartRow = true;

  94.  
  95. }

  96.  
  97. else

  98.  
  99. {

  100.  
  101. //获得当前的单元格

  102.  
  103. int newRowHandle = info.RowHandle;

  104.  
  105. if (CurrentRowHandle != newRowHandle)

  106.  
  107. {

  108.  
  109. CurrentRowHandle = newRowHandle;

  110.  
  111. //选定 区域 单元格

  112.  
  113. SelectRows( StartRowHandle, CurrentRowHandle);

  114.  
  115. }

  116.  
  117. }

  118.  
  119. }

  120.  
  121. }

  122.  
  123. }

  124.  
  125.  
  126.  
  127. //实现鼠标拖动选择多行 ,鼠标放开时

  128.  
  129. private void gridView_MouseUp(object sender, MouseEventArgs e)

  130.  
  131. {

  132.  
  133. StartRowHandle = -1;

  134.  
  135. CurrentRowHandle = -1;

  136.  
  137. isMouseDown = false;

  138.  
  139. isSetStartRow = false;

  140.  
  141. }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#(Asp.Net)中,GridView控件默认是不支持多选的,但是我们可以通过一些方法来实现多选功能。 一种常用的方法是在GridView中添加一个CheckBox列,通过勾选CheckBox来实现多选。具体步骤如下: 1. 在GridView中添加一个TemplateField列,设置其ItemTemplate为一个CheckBox控件。 ``` <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="CheckBox1" runat="server" /> </ItemTemplate> </asp:TemplateField> <!-- 其他列 --> </Columns> </asp:GridView> ``` 2. 在页面加载时,为每个CheckBox绑定一个事件处理程序,用于记录选中的行。 ``` protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GridView1.DataSource = GetData(); GridView1.DataBind(); foreach (GridViewRow row in GridView1.Rows) { CheckBox cb = (CheckBox)row.FindControl("CheckBox1"); cb.CheckedChanged += new EventHandler(cb_CheckedChanged); } } } void cb_CheckedChanged(object sender, EventArgs e) { CheckBox cb = (CheckBox)sender; GridViewRow row = (GridViewRow)cb.NamingContainer; int index = row.RowIndex; if (cb.Checked) { // 将选中的行记录下来 selectedRows.Add(index); } else { // 将取消选中的行从记录中删除 selectedRows.Remove(index); } } ``` 3. 在需要进行多选操作的时候,遍历记录的选中行,对其进行操作。 ``` protected void Button1_Click(object sender, EventArgs e) { foreach (int index in selectedRows) { // 对选中的行进行操作 GridViewRow row = GridView1.Rows[index]; // ... } } ``` 以上就是实现GridView控件多选功能的基本步骤,具体实现还需根据具体需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值