即使在本页面中,我也尝试使用与我多次使用的相同技术将值附加到我的gridview的标签上,但是find控件找不到标签。有谁知道为什么会这样吗?从我完成的研究中,我发现在某些情况下,一个项目模板中有2个标签会导致此问题,但在某些情况下却不会。
Gridview:
Label lblSD = (Label)e.Row.FindControl("lblStockDetailsS");
lblSD.Text = Sline.StockDetailsS;
Label lblSD2 = (Label)e.Row.FindControl("lbl7");
lblSD2.Text = Sline.NLocalStock;
后面的代码:
if (text == "")
{
lblTexte.Text = "";
lblCompteur.Text = "";
for (int i = 0; i < dgv.Rows.Count - 1; i++)
{
dgv.Rows[i].Selected = false;
}
return;
}
if (dgv.RowCount < 1)
{
return;
}
else
{
DataTable d = new DataTable();
lblTexte.Text = "Champ répondant au critère: ";
tbx.SelectionStart = text.Length;
tbx.Text = text.ToUpper();
if ((dgv.DataSource.GetType()).Equals(typeof(DataView)))
{
d = ((DataView)dgv.DataSource).Table;
}
else
{
d = dgv.DataSource as DataTable;
}
DataRow[] row = d.Select("Champ like '%" + text + "%'");
List<int> listeIndex = new List<int>();
for (int i = 0; i < dgv.Rows.Count - 1; i++)
{
foreach (DataRow r in row)
{
if (((DataRowView)dgv.Rows[i].DataBoundItem).Row == r)
{
dgv.Rows[i].Selected = true;
listeIndex.Add(i);
}
else if (!listeIndex.Contains(i))
{
dgv.Rows[i].Selected = false;
}
}
}
}
if (dgv.SelectedRows.Count != 0)
{
dgv.FirstDisplayedScrollingRowIndex = dgv.SelectedRows[0].Index;
}
if (dgv.SelectedRows.Count == 0 && text == "")
{
lblCompteur.Text = "";
}
else
{
lblCompteur.Text = dgv.SelectedRows.Count.ToString();
}
答案 0 :(得分:2)
在这种情况下保留代码块。
if(e.Row.RowType == DataControlRowType.DataRow)
参考:https://techpattarai.com/findcontrol-onrowdatabound-csharp/
谢谢