none
<a href='?ID=<%#DataBinder.DataItem()%>'>XX</a>的问题 RRS feed

  • 问题

  • <a href='Content.aspx?ID=<%#DataBinder.Eval(Container.DataItem,"LeaveID") %>'><%#DataBinder.Eval(Container.DataItem,"LeaveTitle") %></a>这是我写的一段代码,为什么在后面的绑定字段=<%#DataBinder.DataItem()%>能用,而写在<a href=''>里面的那个不能用呢,会提示错误
     急需解决,希望各位大大们回复下,蓝冰在这里谢过了先!!!
    2009年9月28日 0: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("id", typeof(System.Int32)));
        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;
          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();
      }  
      
    </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>
              <a href='?id=<%#Eval("id")%>'>
                <%#Eval("学生姓名")%></a>
            </ItemTemplate>
          </asp:TemplateField>
        </Columns>
      </asp:GridView>
      </form>
    </body>
    </html>
    

    【孟子E章】
    2009年9月28日 1:38
    版主

全部回复

  • 你好 你少写了#

    <a href='Content.aspx?ID=<%# DataBinder.Eval(Container.DataItem,"LeaveID") %>'><%# DataBinder.Eval(Container.DataItem,"LeaveTitle") %></a>
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月28日 1:00
    版主
  • 加上了也不行<a href='Content.aspx?ID=<%# DataBinder.Eval(Container.DataItem,"LeaveID") %>'>还是不能用,在写的时候vs2008根本就没有<%#DataBinder  这个函数的提示,头疼!
    2009年9月28日 1:07
  • 已经select出来了,可是<a href=''>里面的那个数据绑定还是不能用,郁闷!
    2009年9月28日 1:16
  • <%# Eval("LeaveID") %>

    另外确保你的select语句将字段LeaveID取出来了
    【孟子E章】
    2009年9月28日 1:16
    版主
  • 嗯,取出来了
    string sqlSelect = "select LeaveID, LeaveTitle, LeaveTime from tb_LeaveWord";这是那个查询语句
    <a href='Content.aspx?LeaveID=<%#Eval("LeaveID") %>'><%#DataBinder.Eval(Container.DataItem,"LeaveTitle") %></a>
    这样改还是有错,后面的那个绑定会提示错误
    2009年9月28日 1:19
  • <a href='Content.aspx?LeaveID=<%#Eval("LeaveID") %>'>
    你是放在GridView,DataList等控件的模板里面的吗?
    【孟子E章】
    2009年9月28日 1:33
    版主
  • 嗯,放在datalist里的ItemTemplate里面的
    2009年9月28日 1:35
  • 这个是代码
    <td colspan="3" rowspan="2" valign="top" align="center">
                     
                        <asp:DataList ID="dlMessageBoard" runat="server">
                            <HeaderTemplate>
                                <h2><font color="green">帖子标题</font></h2>
                            </HeaderTemplate>
                        <ItemTemplate>
                          <table>
                            <tr>
                              <td align="center" style="width:550px">
                                <a href='Content.aspx?ID=<%# DataBinder.Eval(Container.DataItem,"LeaveID") %>'><%#DataBinder.Eval(Container.DataItem,"LeaveTitle") %></a>
                              </td>
                              <td align="center"><font color="green"><b>(<%#DataBinder.Eval(Container.DataItem,"LeaveTime") %>)</b></font></td>
                            </tr>
                          </table>
                        </ItemTemplate>
                        </asp:DataList>
                     
                    </td>
    2009年9月28日 1:37
  • 不会吧????看看字段名字是否拼写正确
    完整的例子

    <%@ 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("id", typeof(System.Int32)));
        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;
          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();
      }  
      
    </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>
              <a href='?id=<%#Eval("id")%>'>
                <%#Eval("学生姓名")%></a>
            </ItemTemplate>
          </asp:TemplateField>
        </Columns>
      </asp:GridView>
      </form>
    </body>
    </html>
    

    【孟子E章】
    2009年9月28日 1:38
    版主
  • 另外,将提示的错误信息贴上啊
    【孟子E章】
    2009年9月28日 1:38
    版主
  •  
    最下面的两个错误就是图上划虚线的字段的错误,希望给看看,多谢!!
    2009年9月28日 1:42
  • 你可以把你的数据库文件和这个页面的代码发来:
    amxh@21cn.com
    【孟子E章】
    2009年9月28日 1:46
    版主
  • 找到原因了,是因为我在写完后面的那个绑定后,又跑到前面的<a href=“    里面又写了个绑定,次序不同也会有毛病??我先在前面<a href=“    里写,又在后面写就好了,费解!!
    2009年9月28日 1:51
  • 不过非常非常谢谢你!!呵呵
    2009年9月28日 1:53
  • 跟次序没关系,使用简单的Eval("x")就行了
    【孟子E章】
    2009年9月28日 1:54
    版主
  • 嗯,可能是我的vs2008有问题了,每次编译的时候都要重新关闭浏览器才能显示最新的结果自从我升级了IE8以后,郁闷

    2009年9月28日 1:56
  • 设置ie禁止缓存试试
    【孟子E章】
    2009年9月28日 1:58
    版主
  • 嗯,好了,多谢孟大哥!!
    2009年9月28日 2:01