none
Eval方法得到的字符串还能再加工吗 RRS feed

  • 问题

  • 我前台的页面通过<%# Eval("某字段").ToString()%>绑定了数据库的字段值
    如果提取出来的值是"hhhhhhhhhhhhhhhhh"
    可是我还想对它处理一下,处理的方法写好了(比如叫Get(string s)),但是我写成<%# Get(Eval("某字段").ToString())%>老报错
    请问还能进行加工吗,怎么做

    2009年9月17日 2:11

答案

  • 如果你绑定到服务器控件上,如TextBox 上,就用单引号,如

    <asp:TextBox ID="txtName" runat="server" Text='<%# Get( Eval("某字段").ToString() )  %>'</asp:TextBox>

    如果是普通的HTML控件,则可以用双引号,如

    <span title="<%# Get(Eval("某字段").ToString()  )%>"></span>
    努力!奋斗
    • 已标记为答案 m s 2009年9月17日 7:02
    2009年9月17日 2:54
  • <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
      System.Data.DataView CreateDataSourceByXianhuiMeng()
      {
        System.Data.DataTable dt = new System.Data.DataTable();
        System.Data.DataRow dr;
        dt.Columns.Add(new System.Data.DataColumn("学生班级", typeof(System.String)));
        dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
        dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));
        dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));
        dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));
        dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal)));
    
        for (int i = 0; i < 30; i++)
        {
          System.Random rd = new System.Random(Environment.TickCount * i); ;
          dr = dt.NewRow();
          dr[0] = "班级" + i.ToString();
          dr[1] = "【孟子E章】" + i.ToString();
          dr[2] = System.Math.Round(rd.NextDouble() * 100, 2);
          dr[3] = System.Math.Round(rd.NextDouble() * 100, 2);
          dr[4] = System.Math.Round(rd.NextDouble() * 100, 2);
          dr[5] = System.Math.Round(rd.NextDouble() * 100, 2);
          dt.Rows.Add(dr);
        }
        System.Data.DataView dv = new System.Data.DataView(dt);
        return dv;
      }
    
      protected void Page_Load(object sender, EventArgs e)
      {
        g.DataSource = this.CreateDataSourceByXianhuiMeng();
        g.DataBind();
      }
      
      public String Get(String s)
      {
       return s + "HHHHHHHHHH";
      }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title></title>
    </head>
    <body>
      <form id="form1" runat="server">
      <asp:GridView ID="g" runat="server" AutoGenerateColumns="false" >
        <Columns>
          <asp:TemplateField ItemStyle-Width="20%">
            <ItemTemplate>
              <%#Get(Eval("学生班级").ToString())%>
            </ItemTemplate>
            </asp:TemplateField>
        </Columns>
      </asp:GridView>
      </form>
    </body>
    </html>
    

    【孟子E章】
    • 已标记为答案 m s 2009年9月17日 7:02
    2009年9月17日 3:00
    版主

全部回复

  • 可以的

    Get应该是public类型的,
    public String GetData(string s)
    {
    ..
    return "xxx";
    }

    【孟子E章】
    2009年9月17日 2:22
    版主
  • 那前台那怎么写呢?

    2009年9月17日 2:23
  • 你好,Get这个方法签名需要时public或者protected的 这样页面才能访问到
    如 value='<%# DataBinder.Eval(Container.DataItem, "FJR_Name").ToString().Substring(2) %>'
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月17日 2:30
    版主
  • 你好
    你这句话并没用到Get方法:如 value='<%# DataBinder.Eval(Container.DataItem, "FJR_Name").ToString().Substring(2) %>'
    2009年9月17日 2:33
  • 如果你绑定到服务器控件上,如TextBox 上,就用单引号,如

    <asp:TextBox ID="txtName" runat="server" Text='<%# Get( Eval("某字段").ToString() )  %>'</asp:TextBox>

    如果是普通的HTML控件,则可以用双引号,如

    <span title="<%# Get(Eval("某字段").ToString()  )%>"></span>
    努力!奋斗
    • 已标记为答案 m s 2009年9月17日 7:02
    2009年9月17日 2:54
  • 前台就找你的写啊
    【孟子E章】
    2009年9月17日 2:56
    版主
  • 我那么写报错
    说什么Eval、Bind方法只能怎么怎么我也忘了

    2009年9月17日 2:57
  • <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
      System.Data.DataView CreateDataSourceByXianhuiMeng()
      {
        System.Data.DataTable dt = new System.Data.DataTable();
        System.Data.DataRow dr;
        dt.Columns.Add(new System.Data.DataColumn("学生班级", typeof(System.String)));
        dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
        dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));
        dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));
        dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));
        dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal)));
    
        for (int i = 0; i < 30; i++)
        {
          System.Random rd = new System.Random(Environment.TickCount * i); ;
          dr = dt.NewRow();
          dr[0] = "班级" + i.ToString();
          dr[1] = "【孟子E章】" + i.ToString();
          dr[2] = System.Math.Round(rd.NextDouble() * 100, 2);
          dr[3] = System.Math.Round(rd.NextDouble() * 100, 2);
          dr[4] = System.Math.Round(rd.NextDouble() * 100, 2);
          dr[5] = System.Math.Round(rd.NextDouble() * 100, 2);
          dt.Rows.Add(dr);
        }
        System.Data.DataView dv = new System.Data.DataView(dt);
        return dv;
      }
    
      protected void Page_Load(object sender, EventArgs e)
      {
        g.DataSource = this.CreateDataSourceByXianhuiMeng();
        g.DataBind();
      }
      
      public String Get(String s)
      {
       return s + "HHHHHHHHHH";
      }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title></title>
    </head>
    <body>
      <form id="form1" runat="server">
      <asp:GridView ID="g" runat="server" AutoGenerateColumns="false" >
        <Columns>
          <asp:TemplateField ItemStyle-Width="20%">
            <ItemTemplate>
              <%#Get(Eval("学生班级").ToString())%>
            </ItemTemplate>
            </asp:TemplateField>
        </Columns>
      </asp:GridView>
      </form>
    </body>
    </html>
    

    【孟子E章】
    • 已标记为答案 m s 2009年9月17日 7:02
    2009年9月17日 3:00
    版主
  • 是不是你绑定的那个字段错误了

    换一个字段看看,如果再出错,截图出来!
    努力!奋斗
    2009年9月17日 3:02
  • 好的 我试试

    2009年9月17日 3:04
  • 你好,我试了一下确实可以用,可能是我哪写错了吧,谢谢

    2009年9月17日 3:10
  • 你好,从字面上看,你写的确实没有看出什么错误,提供一下错误信息。
    jon.valett@gmail.com
    2009年9月17日 3:43
    版主
  • eval 是只读的而bind是可读写的
    2009年9月17日 9:45