顶一下,不是很懂。我只做web

解决方案 »

  1.   

    在Form_Load()
    中,判断数据源中是否只读行在DataGrid里的对应行
      

  2.   

    好像是继承一个dataGrid列,然后在里面设置条件,根据条件设置颜色。我想也可以这样设置只读属性。
      

  3.   

    设置该列的GridColumnStyle中的Text的属性,具体操作:
    添加某列的GridColumnStyle时,同时给他的TextBox添加事件(OnClick);
    然后在这个事件中(比如事件执行函数为Txt_Click(object sender System.EventArgs e));
    那么内容应该如下:
    TextBox txt=sender as TextBox;
    //然后得到当前行
    DataGridCell dgc = this.Grid.CurrentCell;
    int i=dgc.RowNumber;//行号
    //判断当前行是否满足条件,如果满足条件则让它变为只读
    if(i==XXX)
        txt.ReadOnly=true;
      

  4.   

    没办法了。
    还是很感谢风暴不再。用你的方法了。
    还想请教你个问题,如何让ComboBox无法下拉?我的datagrid列中加了Combobox,无法readonly,只好想办法让它无法下拉工作
      

  5.   

    加一个模版列:
    例如:
    <asp:DataGrid id="DataGrid1" style="Z-INDEX: 103; LEFT: 376px; POSITION: absolute; TOP: 328px"
    runat="server" Width="312px" Height="96px" AutoGenerateColumns="False">
    <Columns>
    <asp:BoundColumn DataField="name" HeaderText="姓名"></asp:BoundColumn>
    <asp:BoundColumn DataField="sex" HeaderText="性别"></asp:BoundColumn>
    <asp:TemplateColumn HeaderText="是否选中">
    <ItemTemplate>
    <asp:CheckBox id=CheckBox1 runat="server" Enabled='<%# (bool)(((DataRowView)Container.DataItem)["礼品包"]) %>' />
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox runat="server"></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid></FONT>
    在后台绑定时多绑定一个bool的变量,一次来控制是否可用!
      

  6.   

    通过当前的单元格被修改事件
    来把当前的单元格修改为具有只读属性的单元格旁边的单元格;
    private void dataGrid1_CurrentCellChanged(object sender, EventArgs e)
    {
     /*不允许编辑单元格是0行1列*/
    if(this.dataGrid1 .CurrentCell .ColumnNumber==1&&
    this.dataGrid1 .CurrentCell .RowNumber  ==0 )
    {
    DataGridCell myCell=new DataGridCell (this.dataGrid1 .CurrentCell .RowNumber,
            this.dataGrid1 .CurrentCell .ColumnNumber );
    this.dataGrid1 .CurrentCell=myCell;
    }
      

  7.   

    很感谢各位,但再说一下,是winform,不是web
    另外,currentcellchanged不是个好办法,因为mycell我不能加到datagrid上,我要在datagrid上添加修改删除。
      

  8.   

    类似问题我遇到过,这样解决吧!
    我需要解决的问题是,判断某一行是不是被checkbox选中如果选中,则删除改行
    for (int i=0; i<dgItem.Items.Count;i++) 
    {
    bool isChecked = ((CheckBox)dgItem.Items[i].FindControl("Checkbox2")).Checked;
    if (isChecked == true) 
    {
    objRows[i].Delete();
    }
    }
      

  9.   

    我自己解决了,我重新写了一个column,还是感谢大家,见者有分。