在 C# 的 GridView 中隐藏编辑行中的图像按钮

Hiding the image button in edit row in GridView in C#

我在 C# 中有一个 GridView 显示人员记录

对于一个人,我可以有一个代码或多个关联代码。

一旦识别出此人,就会创建一个带有他的代码的 List<string>

List<string> codList = new List<string>();
string ns;

if (reader.HasRows)
{
    while (reader.Read())
    {
        cod = reader["cod"].ToString();
        codList.Add(cod.ToString());
        aut = Convert.ToInt32(reader["Aut"]);
    }

    ns = "";
    ns = string.Join(",", (from cod in codList select "?").ToList());
}

对于此人,代码列表包含以下值:

32D
32B
33E
33G
35H

现在我需要在 GridView 中隐藏编辑行的图像按钮,如果变量 aut 的值大于零并且 cod 列的值对应于list:

中的值
if (e.Row.RowType == DataControlRowType.DataRow)
{
    string cod = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "cod"));
    ImageButton btnEdit = (ImageButton)e.Row.FindControl("imgbtnEdit");

    foreach (var co in codList)
    {
        if (aut > 0 && cod.ToString().Contains(co.ToString()))
        {
            btnEdit.Visible = true;
        }
        else
        {
            btnEdit.Visible = true;
        }
    }
}

但是 GridView 中的编辑行按钮仅对 list

的最后一个值可见
35H

对于 list 的其他值,GridView 中的编辑行按钮被隐藏。

32D
32B
33E
33G

最好的方法是什么?

我不确定我是否完全理解你的问题,但我看到了一个问题:

if (aut > 0 && cod.ToString().Contains(co.ToString()))
{
    btnEdit.Visible = true;
}
else
{
    btnEdit.Visible = true;
}

计算结果为 btnEdit.Visible = true,无论您的条件如何。我想你的意思是:

btnEdit.Visible = (aut > 0 && cod.ToString().Contains(co.ToString());

同样在 for 循环中对其进行评估几乎没有什么区别,因为它与您每次设置的 btnEdit 相同。这可能解释了为什么它是最后一个值。