我将datagrid和数据库表进行了绑定,想实现在datagrid中修改信息并更新到数据库中,但由于要求某些信息是不可改的,须设定datagrid中的某列是不可修改的,请问这个在C#中怎么实现啊?

解决方案 »

  1.   

    在属性设计器里面有只读选项,也可以在代码里设置,就是把ReadOnly="True"
    <asp:BoundColumn DataField="ModelName" ReadOnly="True" HeaderText="Product Name"></asp:BoundColumn>
      

  2.   

    winfrmprivate void cSetGridEnabled(bool State)
    {
    this.dg_Prod.TableStyles["t_op_AutoProduceDtl"].GridColumnStyles["dt_StartDate"].ReadOnly = State;
    this.dg_Prod.TableStyles["t_op_AutoProduceDtl"].GridColumnStyles["dt_EndDate"].ReadOnly = State;
    }
      

  3.   

    我找到解决方法了,用格式设置datagrid的格式即可,具体代码如下:
     connstr = "server=localhost;database=lianxi;uid=sa;pwd=850126;";//连接数据库
      myconnection = new SqlConnection(connstr);
      myconnection.Open(); string selectcmd ;
      selectcmd = "select * from 明细表";
      myadapter = new SqlDataAdapter(selectcmd, myconnection);
      myadapter.Fill(mydataset, "明细表"); DataGridTableStyle myGridStyle = new DataGridTableStyle();//设置datagrid格式
      myGridStyle.MappingName = "明细表";//绑定表名
      dataGrid1.TableStyles.Clear();  DataGridTextBoxColumn nameColumnStyle = new DataGridTextBoxColumn();//设置列
     nameColumnStyle.MappingName = "shortname";
      nameColumnStyle.HeaderText = "简码";
      nameColumnStyle.ReadOnly = true;//只将这一列设为只读
      myGridStyle.GridColumnStyles.Add(nameColumnStyle); DataGridTextBoxColumn nameColumnStyle1 = new DataGridTextBoxColumn();
     nameColumnStyle1.MappingName = "num";
      nameColumnStyle1.HeaderText = "数量";
      nameColumnStyle1.ReadOnly = false;
      myGridStyle.GridColumnStyles.Add(nameColumnStyle1);   DataGridTextBoxColumn nameColumnStyle2 = new DataGridTextBoxColumn();
      nameColumnStyle2.MappingName = "person";
       nameColumnStyle2.HeaderText = "操作员";
       nameColumnStyle2.ReadOnly = false;
       myGridStyle.GridColumnStyles.Add(nameColumnStyle2);  dataGrid1.TableStyles.Add(myGridStyle);我试过,程序可以调试通过了,还有我用的是datagrid控件,如果选用datagridview,可以更方便地实现此功能,在属性窗口中column属性中就有相应的设置 :)