2009-05-14 3 views
1

Когда на первой странице загрузки у меня есть ярлык с 0 или 1. Посмотрите на код, и вы сделаете то, что я пытаюсь сделать. Но это не работает, потому что страница уже загружена.Обновить ярлык C#

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 { } 
     } 
    } 
+0

Где в течение жизненного цикла страницы, вы звоните этот код? (Page_Load, Page_Init и т. Д.) – Serapth

+0

пройдите через вашу программу и проверьте, не возвращается ли lblName с фактическим объектом после Findcontrol. – TStamper

+0

. Код имеет значение calld, когда страница загружается, поскольку вызов ретранслятора, который работает, когда его load – 2009-05-14 18:36:02

ответ

0

где вы размещаете код? и будьте осторожны e.Item.FindControl("lblBugStatus") as Label; может вернуть null

+0

это не возвращает null, я проверил это. – 2009-05-14 18:35:00

1

Вы действительно хотите избежать этого типа кодирования, если это вообще возможно. Это быстро превратится в неподготовленный веб-сайт.

Запросить базовые данные вместо элементов графического интерфейса пользователя.

0

Это просто отлично работает, чтобы хорошо контролировать. Но я выясню другой способ вытащить нужные мне данные. То, что я собираюсь, лучше всего исправляет xml-структуру.

+0

какой был способ ... мне любопытно – TStamper

0

Вы могли решить это сейчас, но я думаю, что проблема с кодом, как вы писали, что это:

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

Поскольку вы ссылаетесь контроль в ретранслятор, элементы управления внутри каждого элемента повторителя называются динамически на основе их контекста. Скорее всего, имя элемента управления является что-то вроде:

«rptBugStatus $ repeaterItem0 $ lblBugStatus»

Чтобы узнать точное название, жесткий код значения, запустить страницу в браузере и посмотреть на HTML вывода (через «Просмотр источника» в меню браузера). Вы должны иметь возможность прокручивать вниз и видеть ваш ретранслятор (он будет отображаться как тег <table>), его элементы и элементы управления, находящиеся внутри каждого элемента. Идентификаторы/Имена будут установлены, и вы можете скопировать их/вставить в свой метод FindControl.

Надеется, что это помогает,

Nate

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> 

И у меня нет никаких проблем.

  • Я читаю ниже на странице.

1Under Arbete

Я думаю, что вы будете нуждаться, чтобы получить возможность отправлять больше кода, если вы скрыли любой от нас :)

Tim

Смежные вопросы