日期:2014-05-17  浏览次数:20685 次

弱弱地问一个问题,能不能让dataGridView1某些行不能用鼠标点击
能不能让鼠标无法点击dataGridView1第一列为空的行,

即:让所有第一列为空的行都无法用鼠标点击获取焦点?
------解决方案--------------------
可不可以理解为:第一列为空的行,就是只读呢,那这样问题就应该解决啊!
------解决方案--------------------

//如果希望DataGridView 内某个单元格不可编辑

//设置 DataGridView1 的第2列整列单元格为只读 
DataGridView1.Columns[1].ReadOnly = true;
// 设置 DataGridView1 的第3行整行单元格为只读 
DataGridView1.Rows[2].ReadOnly = true; 


不知道是不是这个意思。。。
------解决方案--------------------
简单的用GridView的RowDataBound事件
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            int i = e.Row.RowIndex;
            string str = GridView1.Rows[i].Cells[0].Text;//获取要判断的列
            if (string.IsNullOrEmpty(str))
            {
                GridView1.Rows[i].Enabled = false;
            }
        }
    }
------解决方案--------------------
c/s控件?好像也有类似RowDataBound事件吧。不太熟悉!
------解决方案--------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinApp {
    public partial class frmDatagridviewSample : Form {
        public frmDatagridviewSample() {
            InitializeComponent();
            InitData();
        }

        private void InitData() {
            System.Data.DataTable dt = new DataTable();
            dt.Columns.Add("id");
            dt.Columns.Add("name");
            dt.Rows.Add(new object[] { 65, "a" });
            dt.Rows.Add(new object[] { 66, "b" });
            dt.Rows.Add(new object[] { 67, "c" });
            dt.Rows.Add(new object[] { null, "c" });

            dataGridView1.DataSource = dt;
            dataGridView1.D