Gridview:根据同一行中单元格的值更改链接按钮文本

本文关键字:单元格 文本 按钮 链接 一行 Gridview | 更新日期: 2023-09-27 17:54:27

下面是我想要的gridview ID, NameStatus是Label, Action是LinkButton

ID ------------- 的名字 ------------- 状态 ------------- 行动

1 -------------- Name1 ------------ 活跃的 ------------ 禁用

2 -------------- Name2 ------------ 在活动 --------- 使

3 -------------- Name3 ------------ 活跃的 ------------ 禁用

如何将LinkButton Text设置为"Disable"或"Enable"取决于Status(始终是ActiveIn-active)的值(Text)?

我的链接按钮如下所示,如何将文本"你想要继续"更改为"你想要禁用"或"你想要启用"基于上述逻辑

<asp:LinkButton ID="lbtAction" runat="server"
               CommandArgument='<%# Eval("ID")%>'
               OnClientClick="return confirm('Do you want to proceed?')"
               OnClick="DoAction"></asp:LinkButton>

Gridview:根据同一行中单元格的值更改链接按钮文本

使用RowDataBound并将逻辑放在那里:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        LinkButton lbtAction = (LinkButton) e.Row.FindControl("lbtAction");
        Label lblStatus = (Label) e.Row.FindControl("lblStatus");
        bool active = lblStatus.Text == "Active";
        lbtAction.Text = active ? "Disable" : "Enable";
        string onClientClick  = string.Format("return confirm('Do you want to {0}?')",
                                               active ? "Disable" : "Enable");
        lbtAction.OnClientClick = onClientClick;
    }
}

使用Gridview RowDataBound事件来实现相同的功能。如下所示(不是确切的代码,但你可以用类似的开头)

void RowDataBound(object sender, GridViewRowEventArgs e)
{
 if(e.Row.RowType == DataControlRowType.DataRow)
    {
        if(((Label)e.Row.FindControl("Status")).Text == "Active")
{
  //disable
}
else
{
//enable
}
}
}