如何使用网格视图 OnRowEditing 事件处理程序来允许编辑网格视图中的特定单元格?
How can I use a Grid View OnRowEditing Event Handler to allow specific cells in the grid view to be edited?
我有一个网格视图,可以显示我们的客户上传的文件中的数据。上传后,文件会通过多种验证方法推送,如果数据存在问题,网格视图中的单元格会以红色突出显示,并给出一个工具提示,简要描述问题。我最近添加了一个 "Edit Invalid Entries" 按钮,我想对其进行编程以允许客户端对每一行中的错误单元格进行更改,但我不确定如何实际将特定单元格设置为编辑模式.我是前端设计的新手(如果您想调用此前端),并且我无法在线找到任何资源来帮助我在网格视图中手动将单元格(甚至行)设置为编辑模式。下面的代码循环遍历网格视图中的每一行,如果它的任何单元格以红色突出显示(即其中一个单元格中有错误),则将其设置为可见并为此调用 OnRowEditing 事件行。
我已经研究了 GridViewEventArgs
class 希望我能够对其进行一些更改,但是 none 的属性和方法似乎是对我想要实现的目标有任何用处。
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
方法中这样做。
在 aspx 中,将 asp:BoundField 更改为 asp:TemplateField,
例如:
<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>
然后当gridview绑定时,你可以在点击编辑按钮后编辑cell.If你想要编辑的单元格,像这样
<asp:TemplateField HeaderText="xxx" >
<ItemTemplate>
//use label show message
<asp:Label id="id" runat="server"
Text='<%# Bind("columnName") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" Style="text-align: left" ID="idT" Width="400px" Text='<%# Bind("columnName") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
在 .cs grvUpload_RowEditing 方法中,添加这个,
grvUpload.EditIndex = e.NewEditIndex;
//也许你需要再次绑定gridview
我有一个网格视图,可以显示我们的客户上传的文件中的数据。上传后,文件会通过多种验证方法推送,如果数据存在问题,网格视图中的单元格会以红色突出显示,并给出一个工具提示,简要描述问题。我最近添加了一个 "Edit Invalid Entries" 按钮,我想对其进行编程以允许客户端对每一行中的错误单元格进行更改,但我不确定如何实际将特定单元格设置为编辑模式.我是前端设计的新手(如果您想调用此前端),并且我无法在线找到任何资源来帮助我在网格视图中手动将单元格(甚至行)设置为编辑模式。下面的代码循环遍历网格视图中的每一行,如果它的任何单元格以红色突出显示(即其中一个单元格中有错误),则将其设置为可见并为此调用 OnRowEditing 事件行。
我已经研究了 GridViewEventArgs
class 希望我能够对其进行一些更改,但是 none 的属性和方法似乎是对我想要实现的目标有任何用处。
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
方法中这样做。
在 aspx 中,将 asp:BoundField 更改为 asp:TemplateField, 例如:
<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>
然后当gridview绑定时,你可以在点击编辑按钮后编辑cell.If你想要编辑的单元格,像这样
<asp:TemplateField HeaderText="xxx" >
<ItemTemplate>
//use label show message
<asp:Label id="id" runat="server"
Text='<%# Bind("columnName") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" Style="text-align: left" ID="idT" Width="400px" Text='<%# Bind("columnName") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
在 .cs grvUpload_RowEditing 方法中,添加这个,
grvUpload.EditIndex = e.NewEditIndex; //也许你需要再次绑定gridview