2012-02-02 4 views
1

У меня есть последующие строки в моем кодеКак я могу получить значение переменной HtmlControl?

HtmlControl divstatus = (HtmlControl)GridView1.Rows[j].FindControl("divstatus"); 

и в моем .aspx

<div style="width:70px;" id="divStatus" runat="server"><%# Eval("DscStatus")%></div> 

Как я могу получить значение моего DIV в коде, используя класс HTMLControl?

My Grid View является слишком большим, поэтому я выложу только часть

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="100%" CellPadding="4" 
     EnableModelValidation="True" ForeColor="#333333"> 
     <FooterStyle BackColor="#990000" ForeColor="White" Font-Bold="True" /> 
     <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> 
     <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /> 
     <AlternatingRowStyle BackColor="White" /> 
     <Columns> 
      <asp:TemplateField HeaderText="Chamado"> 
       <ItemTemplate> 
        <div style="width:30px;"> 
         <a href='responder.aspx?cod=<%# Eval("Codigo") %>&sta=<%# Eval("StatusTicket_Id") %>&mot=<%# Eval("MotivoTicket_Id") %>'> 
           <%# Eval("Codigo") %> 
          </a>                  
         <%# montaAnexo(Eval("Anexo").ToString())%>     
        </div> 
       </ItemTemplate>     
      </asp:TemplateField> 
+0

Это значение будет видно только во время 'привязки' время на этом 'div'. Если вы привязываетесь к данным, то, конечно же, используя один и тот же источник данных, вы также можете вытащить то же значение из своего кода? –

+0

Моя идея в том, что если у моего div есть определенное значение, я изменю цветную линию. –

+0

Есть ли причина, по которой вам нужно использовать HtmlControl? Или вы просто подумали, что это лучший способ получить данные привязки в коде? – pseudocoder

ответ

1

Обновление вашей линии выше таким образом

HtmlControls.HtmlContainerControl divstatus = (HtmlControls.HtmlContainerControl)GridView1.Rows[j].FindControl("divstatus"); 

Затем откройте его InnerText

divstatus.InnerText 
+0

Прекрасно работает! спасибо –

0

Вы должны отправить некоторые данные обратно через AJAX или какое-то скрытое поле формы.

-1
// repeat template section start. Example <ItemTemplate> 
<% 
    string color = "blue"; 
    if (Eval("DscStatus").Equals(1)) { color = "red"; } 
%> 
<tr style="color: <%# color %>"> 
    <td> 
     .... 
     <div style="width:70px;" id="divStatus" runat="server"><%# Eval("DscStatus")%></div> 
     .... 
    </td> 
</tr> 
// end template section end: Example </ItemTemplate> 
+0

Как это решить проблему? (Я не голосовал, просто заметил это тогда) – Lloyd

+0

Интересная концепция, очень классика ASP. Кроме того, в его 'TemplateField' нет элемента . – pseudocoder

1

Edit: Я не рассмотрел ваши недавние изменения добавления элементов стиля GridView TemplateField. Это может повлиять на мой пример, поэтому я буду обновлять, если это необходимо.


Я хотел бы предложить вызов функции в коде фонового который возвращает HTML строку в том числе всего <div>. В противном случае вы будете избивать вокруг куста.

Предполагая DscStatus является строкой:

Markup:

<%# RenderStatusDiv(Eval("DscStatus") %> 

Код:

protected string RenderStatusDiv(object DscStatus) 
    { 
     string strReturn = String.Empty; 
     if (DscStatus != null) 
     { 
      string strDscStatus = (string)DscStatus; 
      if (intDscStatus = "OK") 
      { 
       strReturn = "<div style=\"width:70px;\" id=\"divStatus\" runat=\"server\">" + strDscStatus + "</div>"; 
      } 
      else 
      { 
       strReturn = "<div style=\"width:70px;color:red;\" id=\"divStatus\" runat=\"server\">" + strDscStatus + "</div>"; 
      } 
     } 
     return strReturn; 
    } 
+0

Прохладный стильный ярлык! – Mubarek