在 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 相同。这可能解释了为什么它是最后一个值。
我在 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 相同。这可能解释了为什么它是最后一个值。