根据DataTable值操作GridView TemplateFields

时间:2015-05-29 00:00:03

标签: c# asp.net gridview datatable

背景

这是场景: 我有一个GridView有五列

  1. asp:CommandField设置为readonly
  2. asp:BoundField设置为readonly
  3. 另一个asp:BoundField设置为readonly
  4. 另一个asp:BoundField设置为readonly
  5. asp:TemplateField在此字段下具有以下内容。
    • EditItemTemplate
      • asp:TextBox
  6. 为简单起见,我们假设DataTable绑定的GridView只有两行。

    目标

    我想要实现的是一旦页面加载并且数据表绑定到网格视图我希望网格视图的第一行基于第一行的值处于编辑模式,数据表中的单元格五。通过编辑模式,我的意思是显示TextBox中的TemplateField,并显示CommandField列中的更新按钮。
    如果网格视图的第二行基于第二行的值处于正常模式,则数据表中的第五个单元格同时CommandField列显示更新链接,然后生成TextBox可在网格视图的第二行上编辑。

    细胞值的位置是不加区别的。我知道如何指定要查看哪个单元格以确定行的状态,我只是不知道如何设置要编辑的行状态,以及TextBox可以在数据源绑定上查看。

1 个答案:

答案 0 :(得分:0)

您可以在Grid的DataBound事件或RowDataBound事件上执行:

1)Grid_DataBound:

protected void grid1_DataBound(object sender, EventArgs e)
    {
        int editIndex = -1;
        // find the row index which is editable


        grid1.EditIndex = editIndex;
        // Set EditIndex = -1 to set the row to normal mode
    }

2)RowDataBound

protected void grid1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            bool isEdit = false;
            // check for the condition to determine the state of the row

            if (isEdit)
            {
                e.Row.RowState = DataControlRowState.Edit;
            }
        }
    }

希望得到这个帮助。