Asp.net 当文本框值与特定Gridview列值匹配时,更改Gridview行的颜色
我有一个条形码扫描仪,当我扫描任何一个框时,那个特定的“Asp.net 当文本框值与特定Gridview列值匹配时,更改Gridview行的颜色,asp.net,gridview,Asp.net,Gridview,我有一个条形码扫描仪,当我扫描任何一个框时,那个特定的“BoxID”就在我的文本框中。因此,当我单击enter时,它应该检查GridView中特定的BoxID,并为整行着色。检查下面的屏幕截图 我使用了RowDataBound函数来更改颜色,但是当GridView数据绑定时,此函数只运行一次 我的行数据绑定代码: protected void GridView2_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEv
BoxID
”就在我的文本框中。因此,当我单击enter时,它应该检查GridView中特定的BoxID
,并为整行着色。检查下面的屏幕截图
我使用了RowDataBound
函数来更改颜色,但是当GridView数据绑定时,此函数只运行一次
我的行数据绑定代码:
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中的RowDataBond
protected 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
”
这就是我的屏幕的样子
有什么想法吗?您可以像这样在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;
}
}
}
$(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;
}
});
});
});
更新:
如果您不想重新加载页面,那么可以在客户端使用jQuery这样做:-
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;
}
}
}
$(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。我想您正在寻找这个,谢谢,但不,这只是选择了与textbox值相关的所有值,但我想给父行上色,我的id是唯一的。您想给整行上色吗?是的,当textbox值与网格视图Boxidy匹配时,您可以将foreach()放在TextBox1_TextChanged事件中的GridviewRow,并循环进行适当匹配,然后更改该行的颜色。谢谢。这很好用,但是Textbox1.TextChanged会刷新页面,所以我在按钮内调用了相同的方法…@Anirudh-哪个按钮?无论如何,这些服务器控件将执行按钮或文本框的回发。如果你不想这样做,最好使用Javascript。我在文本框前面使用了单独的按钮。Yea按钮将只调用它的特定方法,在textbox中,它调用pageload方法,该方法将刷新。无论如何,非常感谢。。信息技术worked@Anirudh-嘿,不,你的轻描淡写是错误的。回发是回发,即使对于您的按钮,单击页面加载
事件也会触发,之后,您的按钮单击事件也会触发。所以重新加载发生了。您可以使用客户端代码来避免这种情况。请检查我的更新。是的,你是正确的,但在我的代码中,我正在为同一个按钮执行其他过程,正如你所说的abt postback,我的意思是在文本框中,在文本更改后,postback返回另一个按钮,它会重新加载页面。是的,右回发发生在特定代码运行之前,我说的是在特定代码运行之后,在按钮中不会,在文本框中文本更改了执行的代码量,为什么刷新我的页面而没有值。