我有一个条码扫描器,当我扫描任何盒子时,特定的“BoxID
”位于我的TextBox中。因此,当我单击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数据库时才会发生。
所以,我试图在TextBox1_TextChanged
中调用RowDataBoundprotected void TextBox1_TextChanged(object sender, EventArgs e)
{
GridView2.RowDataBound += new GridViewRowEventHandler(GridView2_RowDataBound);
}
即使它没有用。
所以我想在textbox.textchanged里面写一个像RowDataBound这样的方法。我也试过了,但他们使用的是“e”,它是GridViewRowEventArgs
。那么,如何在textbox.textchanged中调用这个“e”,类似于“Gridview2.Row.RowType
”而不是ASP.NET中的“e.Row.RowType
”
任何想法?
答案 0 :(得分:3)
您可以像这样遍历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。