Я пытаюсь показать кнопку, на которой IsPublished истинно, она работает, но за исключением первой строки в сетке. Почему? Я так долго пробовал, но это совсем не работает
protected void gvNITs_RowDataBound(object sender, GridViewRowEventArgs e)
{
try
{
//LinkButton lb = e.Row.FindControl("btnLinkDownload") as LinkButton;
//if (lb != null)
// ScriptManager.GetCurrent(this).RegisterPostBackControl(lb);
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton Lbtn_change = (LinkButton)e.Row.FindControl("Lbtn_change");
HiddenField hdnPublishNITDate = e.Row.FindControl("hdnPublishedNITdate") as HiddenField;
DateTime? dtPublishedNITDate = string.IsNullOrEmpty(hdnPublishNITDate.Value) == true ? null : (DateTime?)hdnPublishNITDate.Value.ToDate();
HiddenField hdnIsPublishedNIT = e.Row.FindControl("hdnIsPublishedNITs") as HiddenField;
bool IsPublished = hdnIsPublishedNIT.Value.ToBool();
GridView gv = (GridView)sender;
foreach (GridViewRow gvr in gv.Rows)
{
if (IsPublished == true)
{
Lbtn_change.Visible = true;
}
}
}
}
}
Это не работает, потому что у вас есть вложенный цикл. Событие RowDataBound
запускается, когда строка добавляется в GridView. Но в событии RowDataBound вы зацикливаете все строки в GridView foreach (GridViewRow gvr in gv.Rows)
Если вы проверите gv.Rows.Count
, вы обнаружите, что это 0
в первой строке, потому что он еще не был добавлен в GridView.
Но в любом случае этот цикл вам не нужен, поскольку у вас уже есть доступ к Lbtn_change
. Поэтому установите свойство Visible без цикла.
вы задаете много вопросов. Чтобы получить больше ответов, вы можете принять ответы. Это могло бы побудить больше людей ответить, и вы могли бы больше участвовать в этом сообществе. Он показывает другим людям, какой ответ вы считаете наиболее полезным.