我怎样才能获得HtmlControl变量的值?

时间:2012-02-02 19:03:19

标签: c# asp.net

我的代码中有以下行

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

和我的.aspx

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

如何使用HtmlControl类在代码隐藏中获取div的值?

我的网格视图太大了,所以我只发布一部分

   <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>

4 个答案:

答案 0 :(得分:1)

以这种方式更新你的行

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

然后访问其innerText

 divstatus.InnerText

答案 1 :(得分:1)

编辑:我没有查看最近添加GridView TemplateField样式元素的编辑内容。这可能会影响我的示例,因此我会在适当时更新。


我建议在代码隐藏中调用一个函数,该函数返回一个包含整个<div>的HTML字符串。否则你就会在灌木丛中殴打。

假设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;
    }

答案 2 :(得分:0)

您必须通过ajax或某些隐藏的表单字段发回一些数据。

答案 3 :(得分:-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>