c# - 更改 ItemDatabound 上数据列表内的链接按钮前景色
问题描述
嗨,我正在尝试根据网络、copychimp、复制器和驱动器空间的条件更改链接按钮的前景色,我试过这个:
protected void dgrMachines_ItemDataBound(object sender, DataListItemEventArgs e)
{
string copychimp = Convert.ToString(DataBinder.Eval(e.Item.DataItem, "copychimp"));
string network = Convert.ToString(DataBinder.Eval(e.Item.DataItem, "network_isconnected"));
string drive = Convert.ToString(DataBinder.Eval(e.Item.DataItem, "drive_alert"));
string replicator = Convert.ToString(DataBinder.Eval(e.Item.DataItem, "replicator_isactive"));
if (network == "0" || copychimp == "Disconnected" || drive == "1" || replicator == "0")
{
e.Item.ForeColor = System.Drawing.Color.Red;
}
else
{
e.Item.ForeColor = System.Drawing.Color.Green;
}
}
没运气
但是当我尝试将用户更改 e.Item.ForeColor = System.Drawing.Color.Green;
为 e 时。Item. e.Item.BackColor = System.Drawing.Color.Green;
这行得通。这是我的html:
<asp:DataList ID="dgrMachines" runat="server" RepeatColumns="5" OnSelectedIndexChanged="dgrMachines_SelectedIndexChanged" OnItemCommand="dgrMachines_ItemCommand" CellPadding="3" CssClass="col-12" OnItemDataBound="dgrMachines_ItemDataBound">
<HeaderTemplate>
<div class="container col-12" style="background-color: #333333">
<b>
<h2 class="text-center" style="color: white">Machines List</h2>
</b>
</div>
</HeaderTemplate>
<ItemTemplate>
<asp:LinkButton ID="lblMachine" Text='<%# Eval("machine") %>' runat="server" Font-Size="Medium" ForeColor="Black"></asp:LinkButton>
<%-- <asp:label ID="lblcopychimp" runat="server" Text='<%# Eval("copychimp") %>' />
<asp:label ID="lblNetwork" runat="server" Text='<%# Eval("network_isconnected") %>' />
<asp:label ID="lblreplicator" runat="server" Text='<%# Eval("replicator_isactive") %>' />
<asp:label ID="lbldrive" runat="server" Text='<%# Eval("drive_alert") %>' />--%>
<%-- <%#Eval("machine")%> --%>
</ItemTemplate>
</asp:DataList>
有人会帮我解决这个问题吗?
解决方案
您需要使用FindControl
:
使用 FindControl 从代码隐藏页面中的函数访问控件,访问另一个容器内的控件,或在调用者无法直接访问目标控件的其他情况下。只有当控件直接包含在指定容器中时,此方法才会找到控件;也就是说,该方法不会在控件内的控件层次结构中进行搜索。
所以它应该是这样的:
LinkButton machineButton = (e.Item.FindControl("lblMachine") as LinkButton);
if (machineButton != null)
{
machineButton.ForeColor = System.Drawing.Color.Red;
}
代替:
e.Item.ForeColor = System.Drawing.Color.Red;
推荐阅读
- c# - Windows 窗体中的菜单条没有快速属性
- python - 返回“JsonResponse”时为ajax请求设置cookies
- r - 如何创建删除最后一个输入/行的操作按钮(通过单击输入),但能够继续在 R 中输入数据闪亮
- c# - 如何将多个元素添加到包装面板?
- python - Python如何通过知道列表中列表的第一个元素来获取列表中列表的索引?
- android - 禁用扩展时自动滚动 AppBarLayout
- r - 为什么这个 R 版本的骑士之旅不起作用?
- sublimetext3 - 如何在 Autoprefixer 的 caniuse 列表上运行更新
- php - Composer 如何从版本 1 更新到版本 2
- python - 如何访问传递给 Python 线程的函数 args?