我有一个条形码扫描仪,当我扫描任何盒子时,特定的“BoxID
”位于我的文本框中。因此,当我单击 Enter 时,它应该检查 GridView 中的特定 BoxID
并为整行着色。检查下面的屏幕截图。
我使用了RowDataBound
函数来更改颜色,但该函数仅在GridView DataBinds时运行一次。
我的RowDataBound代码:
protected void GridView2_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// determine the value of the UnitsInStock field
string myBoxId = (DataBinder.Eval(e.Row.DataItem, "BoxID")).ToString();
if (myBoxId == TextBox1.Text)
{
e.Row.BackColor = System.Drawing.Color.Yellow;
}
}
}
这段代码是正确的,但正如我所说,它仅在 gridview 数据绑定(bind)时发生。
所以,我尝试在 TextBox1_TextChanged 中调用 RowDataBound
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
GridView2.RowDataBound += new GridViewRowEventHandler(GridView2_RowDataBound);
}
即使它不起作用。
所以我想在textbox.textchanged内部编写一个像RowDataBound这样的方法。我也尝试过,但他们使用了“e”,它是 GridViewRowEventArgs 。那么,如何在 textbox.textchanged 中调用此“e”,例如 ASP.NET 中的“Gridview2.Row.RowType
”而不是“e.Row.RowType
”
有什么想法吗?
最佳答案
您可以像这样循环遍历 gridview 行:-
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView2.Rows)
{
if (row.Cells[1].Text == txtBarCode.Text)
{
row.BackColor = System.Drawing.Color.Yellow;
break;
}
}
}
更新:
如果您不想重新加载页面,那么您可以使用 jQuery 在客户端执行此操作,如下所示:-
$(document).ready(function () {
$("#btnSearch").click(function (e) {
e.preventDefault();
var enteredText = $("#txtBarCode").val();
var gridview = $('#GridView2');
$('tr', gridview).each(function () {
var parentRow = $(this);
if ($('td:nth-child(2)', parentRow).text() == enteredText)
{
parentRow.css("background-color", "yellow");
return false;
}
});
});
});
这里,btnSearch
是您的按钮的 ID。
关于asp.net - 当文本框值与特定 gridview 列值匹配时,更改 Gridview 行的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32962378/