如何使用网格视图OnRowEditing事件处理程序来允许编辑网格视图中的特定单元格?

时间:2019-06-18 20:33:35

标签: c# asp.net events gridview

我有一个网格视图,该视图显示了客户上传的文件中的数据。上传后,通过几种验证方法推送文件,如果数据存在问题,则网格视图中的单元格将以红色突出显示,并提供简要描述问题的工具提示。我最近添加了一个“编辑无效条目”按钮,我希望对其进行编程以允许客户端更改每行中的错误单元格,但是我不确定如何实际将特定单元格设置为编辑模式。我是前端设计的新手(如果您想称呼此前端),而且我一直无法在线找到任何资源来帮助我在网格视图中手动将单元格(甚至行)设置为编辑模式。下面的代码循环遍历网格视图中的每一行,如果其任何单元格以红色突出显示(即,其中一个单元格有错误),则将其设置为可见,并为此调用OnRowEditing事件行。

我已经研究了GridViewEventArgs类,希望可以对此进行一些更改,但是这些属性或方法似乎都对我尝试的没有用处实现。

for (int i = 0; i < grvUpload.Rows.Count; ++i)
{
   if (grvUpload.Rows[i].Cells[0].BackColor.Equals(Color.Red) || grvUpload.Rows[i].Cells[1].BackColor.Equals(Color.Red) || grvUpload.Rows[i].Cells[2].BackColor.Equals(Color.Red) || grvUpload.Rows[i].Cells[3].BackColor.Equals(Color.Red) || grvUpload.Rows[i].Cells[4].BackColor.Equals(Color.Red) || grvUpload.Rows[i].Cells[5].BackColor.Equals(Color.Red))
   {
      grvUpload.Rows[i].Visible = true;
      grvUpload.SetEditRow(i);
   }
   else
   {
      grvUpload.Rows[i].Visible = false;
   }
}

...

protected void grvUpload_RowEditing(object sender, GridViewEditEventArgs e)
{
   // ?
}

我希望第grvUpload.SetEditRow(i)行将网格视图中的第i行设置为编辑模式,但我认为必须在grvUpload_RowEditing方法中这样做。

1 个答案:

答案 0 :(得分:0)

在aspx中,将asp:BoundField更改为asp:TemplateField, 例如:

Host

然后在gridview绑定时,可以编辑单元格。如果要在单击“编辑”按钮后编辑单元格,就像这样

 <asp:TemplateField HeaderText="xxx">
      <ItemTemplate>
          <asp:TextBox runat="server" Style="text-align: left" ID="id" Width="400px"  Text='<%# Bind("columnName") %>'></asp:TextBox>
       </ItemTemplate>
</asp:TemplateField>

在.cs grvUpload_RowEditing方法中,添加此,

grvUpload.EditIndex = e.NewEditIndex;  //也许您需要再次绑定gridview