none
GridView的变色HyperLinkField 绑定问题!!! RRS feed

  • 问题

  • Gridvie:

          公司名称      联系人   
            A            A

            B            B

            C            C
           
            D            D

    SQL数据库:

          Name    Contact    Type  三个字段

    Tpye值 是A类或者B类

    Gridvie 绑定了 Name和Contact  现在想通过Type来判断如果是A类的客户 Gridvie上对应的公司名称列绑定的数据颜色是红色



    在.cs中写一个方法函数
    public string RedFont(object obj)
    {
        if(Convert.Tostring(obj) == "A")
          return " <span sytle='color:red'>"+obj.ToString()+" </span>";
        else
          return obj.ToString();
    }

    前台页面绑定时这么写
    <%#RedFont(Eval("公司名称字段"))%>


    我想知道 HyperLinkField 怎么绑定 <%#RedFont(Eval("公司名称字段"))%>

    下面代码是GridView里 HyperLinkField的代码
     <asp:HyperLinkField DataNavigateUrlFields="cataid,newsid"
                      DataNavigateUrlFormatString="view.aspx?cataid={0}&amp;newsid={1}"
                      DataTextField="comname" HeaderText="公司名称">
                      <ItemStyle Width="200px" />
                  </asp:HyperLinkField>

    请问我该把<%#RedFont(Eval("公司名称字段"))%> 加载到哪里   符合条件的就会变色
    • 已移动 肖小勇Moderator 2010年2月4日 6:53 asp.net 相关问题 (发件人:.NET Framework 一般性问题讨论区)
    2010年2月4日 5:51

答案

  • 你好!

    使用下面的方式吧。

    <%@ Page Language="C#" AutoEventWireup="true" %>
    <%@ Import Namespace="System.Data" %>
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Id", typeof(int));
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Type", typeof(string));
            
            dt.PrimaryKey = new DataColumn[] { dt.Columns["Id"] };
    
            dt.Rows.Add(new object[] { 1, "Sam", "A"});
            dt.Rows.Add(new object[] { 2, "XXY", "B" });
            dt.Rows.Add(new object[] { 3, "Sam", "A" });
    
            this.GridView1.DataSource = dt;
            this.GridView1.DataBind();
        }
    
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType != DataControlRowType.DataRow) return;
    
            DataRowView drv = (DataRowView)e.Row.DataItem;
    
            if (drv["Type"].ToString() == "A")
            {
                HyperLink c = (HyperLink)e.Row.FindControl("HyperLink1");
                if (c != null)
                    c.ForeColor = System.Drawing.Color.Red;
            }
        }
    </script>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            onrowdatabound="GridView1_RowDataBound">
            <Columns>
                <asp:BoundField DataField="Id" HeaderText="Id" />
                <asp:TemplateField HeaderText="公司名称">
                    <ItemTemplate>
                        <asp:HyperLink ID="HyperLink1" runat="server" 
                            NavigateUrl='<%# Eval("Id", "View.aspx?Id={0}") %>' Text='<%# Eval("Name") %>'></asp:HyperLink>
                    </ItemTemplate>
                    <ItemStyle Width="200px" />
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        </form>
    </body>
    </html>
    


    知识改变命运,奋斗成就人生!
    2010年2月4日 6:52
    版主