2012-02-02 78 views
1

我在我的代码如何获取HtmlControl变量的值?

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

,并在我的.aspx后续行

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

怎样才能让我的div使用类HTMLLoader对象的代码隐藏的价值?

我的网格视图是太大了,所以我会后只是部分

<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' '捆绑' 时间可见。如果你是数据绑定,那么肯定使用相同的数据源,你也可以从你的代码中提取出相同的值。 – 2012-02-02 19:06:26

+0

我的想法是,如果我的div有特定的值,我会改变颜色线。 – 2012-02-02 19:07:37

+0

是否有你需要使用HtmlControl的理由?或者你是否认为这是让绑定数据进入代码隐藏的最佳方式? – pseudocoder 2012-02-02 19:08:08

回答

1

更新您的生产线这样

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

上方。然后访问它的innerText

divstatus.InnerText 
+0

工作正常!谢谢 – 2012-02-02 19:24:50

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 2012-02-02 19:16:57

+0

有趣的概念,非常经典的asp。另外他的'TemplateField'中没有​​元素。 – pseudocoder 2012-02-02 19:21:23

1

编辑:我没有查看你最近的编辑将在GridView的TemplateField风格元素。这可能会影响我的例子,所以我会在适当的时候进行更新。


我建议调用代码隐藏函数返回一个HTML字符串在内的整个<div>。否则,你会在灌木丛中跳动。

假设DscStatus是一个字符串值:

标记:

<%# 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 2012-02-02 19:35:27