动态绑定数据源,不使用datagridtextbox列,列因为是动态的,但是要实现点右键不能弹出系统菜单

解决方案 »

  1.   

    DataTable dt = new DataTable ();
    DataColumn dc = new DataColumn("id", typeof(int));
    dt.Columns.Add(dc); DataRow row = dt.NewRow();
    row["id"] = "1121"; dt.Rows.Add(row); this.dataGrid1.DataSource = dt;
    //设置格式。
    DataGridTableStyle ddd = new DataGridTableStyle();
    DataGridTextBoxColumn idcol = new DataGridTextBoxColumn();
    idcol.MappingName = "id"; ContextMenu cm = new ContextMenu();
                                //使右键无菜单。
    idcol.TextBox.ContextMenu = cm;

    ddd.GridColumnStyles.Add(idcol);

    this.dataGrid1.TableStyles.Add(ddd);举个例子DataGridTableStyle ,应该是楼主要的效果。
      

  2.   

    DataGridTableStyle 
    DataGridTextBoxColumn
    不使用以上两个东东,是动态
      

  3.   

    private void Form6_Load(object sender, System.EventArgs e)
    {
    this.ResizeRedraw = true; DataTable dt = new DataTable ();
    DataColumn dc = new DataColumn("id", typeof(int));
    dt.Columns.Add(dc); DataColumn dc2 = new DataColumn("id2", typeof(string));
    dt.Columns.Add(dc2); DataColumn dc3 = new DataColumn("id3", typeof(string));
    dt.Columns.Add(dc3); DataRow row = dt.NewRow();
    row["id"] = "1121";
    row["id2"] = "asdfasfd";
    row["id3"] = "asfsda"; dt.Rows.Add(row);

    this.dataGrid1.DataSource = dt;
    DataGridTableStyle ddd = this._makeTableStyle(dt);
    this.dataGrid1.TableStyles.Clear();
    this.dataGrid1.TableStyles.Add(ddd);
    } private DataGridTableStyle _makeTableStyle(DataTable dt)
    {
    DataGridTableStyle ddd = new DataGridTableStyle();
    ContextMenu cm = new ContextMenu();
    foreach(DataColumn dc in dt.Columns)
    {
    DataGridTextBoxColumn col = new DataGridTextBoxColumn();
    col.MappingName = dc.ColumnName;
    col.HeaderText = dc.ColumnName;
    col.TextBox.ContextMenu = cm;
    ddd.GridColumnStyles.Add(col);
    }
    return ddd;
    }列是动态的吗??用这两个可以解决啊.DataGridTableStyle DataGridTextBoxColumn
    如果还要其他的要求什么的(比如dropdownlist..,隐藏某一列什么的)你可以继承DataGridTextBoxColumn,自己写个类好了,便于控制.