2015-10-09 2 views
0

Я новичок в ASP и надеялся получить некоторые рекомендации о том, как сделать мой литерал доступным в моем коде, а затем изменить его на текст переданного параметра.Заменить текст ASP Literal в коде за

У меня есть файл resources.ascx, который отображает список людей (вытащил из базы данных). Это работает отлично, и это выглядит примерно так:

Полное имя

T: (888-888-8888)

F: (888-888-8888)

Проблема в том, что теперь я хочу, чтобы она условно произносила «Toll Free» вместо «F:» для одной страницы.

В people.aspx страницы, я проходящий в «Toll Free» для ресурса:

<%@ Register Src="~/UserControls/resources.ascx" TagName="Resources" TagPrefix="ucResources" %>  
<ucResources:Resources ID="Resources1" FaxNumberAlias="Toll Free" runat="server" /> 

resources.ascx Ретранслятора выводит все человек из базы данных на страницу ,

<asp:Repeater ID="Repeater1" runat="server"> 
<ItemTemplate> 
    <div class="sectioncontent"> 
     <b><%#Eval("EmployeeFirstName")%> <%#Eval("EmployeeLastName)%></b> 
     T: <%#Eval("Phone")%> 
     <br> 
     <asp:Literal runat="server" ID="FaxNumberLabel">F:</asp:Literal> <%#Eval("Fax")%><br> 
    </div> 
    <br /> 
</ItemTemplate> 

В resources.ascx.vb файл, я хочу сделать что-то вроде этого, но FaxNumberLabel (буквальный я объявил в resources.ascx) не доступен или не был объявлен ,

Public Property FaxNumberAlias() As String 
    Get 
     Return _FaxNumberAlias 
    End Get 
    Set(ByVal value As String) 
     _FaxNumberAlias = value 
    End Set 
End Property 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not String.IsNullOrEmpty(_FaxNumberAlias) Then 
     FaxNumberLabel.Text = _FaxNumberAlias 
    End If 
    PopulateRepeater() 
End Sub 

Что мне не хватает, что связывает литерал с кодом позади?

ответ

1

Проблема в том, что Literal находится внутри Repeater, поэтому у вас может быть много их. Самый лучший способ, чтобы получить доступ к ним внутри OnDataItemBound случае ваших ретрансляторов:

Protected Sub Repeater1_OnDataItemBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs) Handles Repeater1.OnDataItemBound 
    If (e.Item.ItemType = ListItemType.Item) Or _ 
     (e.Item.ItemType = ListItemType.AlternatingItem) Then 

     Dim litFaxNumberLabel As Literal = e.Item.FindControl("FaxNumberLabel") 

     litFaxNumberLabel.Text = _FaxNumberAlias 

    End If 

End Sub 

Примечание: Извините любой плохой синтаксис, это уже более 4 лет, так как я прикоснулся VB!

+0

Спасибо! Я нашел несколько ответ с большим поиском, но не полностью решил его, пока не получил ваш ответ. Мне не хватало часть «Ручки Repeater1.ItemDataBound», и мне не удалось выяснить, откуда происходит «RepeaterItemEventArgs». – hengj

0

Вы можете просто использовать, как это -

 protected void DataDisplay_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) 
     { 
      LinkButton lit = (LinkButton)e.Item.FindControl("LinkButton2"); 
      if (lit.Text == "0") 
      { 
       int a = Convert.ToInt32(lit.Text); 
       if (a == 0) 
       { 
        if (a == 0) 
        { 
         lit.Text = "Your Text"; 
        } 
       } 
      } 
     } 
    } 
Смежные вопросы