更新标签C#

时间:2009-05-14 18:29:22

标签: c# asp.net

当页面首次加载时,我有一个标签,其中有0或1.查看代码,您将看到我想要做的事情。但它不起作用,因为页面已经加载。

protected void rptBugStatus_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Label lblName = e.Item.FindControl("lblBugStatus") as Label;
            if (lblName.Text == "1")
            {
                lblName.Text = lblName.Text + "Under arbete";
            }
            else if (lblName.Text == "0")
            {
                lblName.Text = "Fixad";
            }
            else { }
        }
    }

5 个答案:

答案 0 :(得分:1)

如果可能的话,你真的想避免这种类型的编码。这将很快成为一个无法维护的网站。

查询基础数据而不是GUI元素。

答案 1 :(得分:0)

你把你的代码放在哪里?并谨慎e.Item.FindControl("lblBugStatus") as Label;可能会返回null

答案 2 :(得分:0)

它可以很好地控制它。但我想出了另一种方法来获得我想要的数据。我要做的就是更好地修复xml结构。

答案 3 :(得分:0)

您现在可能已经解决了这个问题,但我认为您发布代码的问题是:

Label lblName = e.Item.FindControl("lblBugStatus") as Label;

因为您在转发器中引用控件,所以每个转发器项内的控件都是根据其上下文动态命名的。很可能控件的名称是这样的:

“rptBugStatus $ $ repeaterItem0 lblBugStatus”

要找出确切的名称,硬编码值,在浏览器中运行页面,并查看HTML输出(通过浏览器菜单中的“查看源代码”)。您应该能够向下滚动并查看转发器(它将呈现为<table>标签),其项目以及每个项目内的控件。将设置ID /名称,您可以将它们复制/粘贴到FindControl方法中。

希望这有帮助,

内特

答案 4 :(得分:0)

好的,我假设您已设置此标签(假设在转发器中,从您的代码中)以获得值 - 我已尝试使用以下代码将数据绑定到完全相同的内容。

protected override void OnPreRender(EventArgs e)
{
    base.OnLoad(e);
    List<string> strList = new List<string>();
    strList.Add("1");
    rptBugStatus.DataSource = strList;
    rptBugStatus.DataBind();
}

protected void rptBugStatus_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        Label lblBugStatus = e.Item.FindControl("lblBugStatus") as Label;
        // have added this just so we are actually setting the text property on the bug status
        // - i have assumed you do this.
        lblBugStatus.Text = e.Item.DataItem.ToString();

        if (lblBugStatus.Text.Equals("1"))
        {
            lblBugStatus.Text = lblBugStatus.Text + "Under arbete";
        }
        else if (lblBugStatus.Text.Equals("0"))
        {
            lblBugStatus.Text = "Fixad";
        }
    }
}

aspx是

    <asp:Repeater runat="server" ID="rptBugStatus" OnItemDataBound="rptBugStatus_ItemDataBound">

    <ItemTemplate>
        <asp:Label ID="lblBugStatus" runat="server"></asp:Label>
    </ItemTemplate>
    </asp:Repeater>

我没有问题。

  • 我在页面上显示以下内容。

1在arbete下

如果您隐藏了任何代码,我认为您需要发布更多代码:)