我要实现到的功能是,显示二级分类,作为栏目,然后把属于二级分类的文章标题都存放在该栏目中,实现显示多个栏目分类显示新闻标题我尝试将数据源AccessDataSource2嵌入到显示栏目的Repeater内,再用GridView1把数据源显示出来,但是AccessDataSource2不能获取到Repeater 中 <%# Eval("id") %> 的值,我也尝试过把 <%# Eval("id") %> 定义成Session,再让AccessDataSource2获取,但是定义不到,也尝试过把<%# Eval("id") %>赋值给一个Label1然后再获取Label1,但是也获取不到。以下是源码及错误信息,求高手帮助帮助~感谢<asp:Repeater ID="Repeater1" runat="server" DataSourceID="AccessDataSource1">
      <ItemTemplate>
      <div id= "box"><a class="boxa" href="<%# "News.aspx?id=" & Eval("id") %>">更多..</a> <h2><%# Eval("Class_Name") %></h2>
      
     <!----------------------------以下的AccessDataSource2数据源筛选的是获取Repeater中的Eval("id")------------------------------>
      <asp:AccessDataSource ID="AccessDataSource2" runat="server" 
            DataFile="~/App_Data/Database.mdb" 
            SelectCommand="SELECT * FROM [News] WHERE ([分类ID] = ?)">
            <SelectParameters>
                <asp:Parameter DefaultValue='<%# Eval("id") %>' Name="分类ID" Type="Int32" />
            </SelectParameters>
        </asp:AccessDataSource>
        <!---------------------------以下的GridView1只作显示AccessDataSource2数据源的值------------------------------------->
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" 
                            CellPadding="4" DataKeyNames="ID" DataSourceID="AccessDataSource2"
                            ForeColor="#333333" GridLines="None" Width="640px">
          <RowStyle BackColor="#EFF3FB" />
          <Columns>
              <asp:BoundField DataField="新闻标题" HeaderText="标题" SortExpression="新闻标题" />
              <asp:BoundField DataField="来源" HeaderText="来源" SortExpression="来源" />
              <asp:BoundField DataField="添加时间" HeaderText="添加时间" SortExpression="添加时间" />
          </Columns>
          <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
          <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
          <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
          <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
          <EditRowStyle BackColor="#2461BF" />
          <AlternatingRowStyle BackColor="White" />
      </asp:GridView>
      </div> 
      </ItemTemplate>
      </asp:Repeater><strong>分析器错误消息: </strong>仅对具有 DataBinding 事件的对象提供数据绑定表达式支持。System.Web.UI.WebControls.Parameter 没有 DataBinding 事件。<br />
<br />
<strong>源错误:</strong> <br />
<br />
<table width="100%" bgcolor="#ffffcc">
  <tbody>
    <tr>
      <td><pre>  行 37:             SelectCommand=&quot;SELECT * FROM [News] WHERE ([分类ID] = ?)&quot;&gt;  行 38:             &lt;SelectParameters&gt;  行 39:                 &lt;asp:Parameter DefaultValue='&lt;%# Eval(&quot;id&quot;) %&gt;' Name=&quot;分类ID&quot; Type=&quot;Int32&quot; /&gt;  行 40:             &lt;/SelectParameters&gt;  行 41:         &lt;/asp:AccessDataSource&gt;</pre></td>
    </tr>
  </tbody>
</table>
<br />
<strong>源文件: </strong>/peijiao/class.aspx<strong>    行: </strong>39 

解决方案 »

  1.   

    需要在repeater的itembander中写,
    具体谷歌搜索repeater嵌套,
      

  2.   

    <asp:QueryStringParameter DefaultValue="" Name="bstype" 
                        QueryStringField="bstype" Type="String" />应该要指明参数是来自那里,可能是Session,QueryString,Control等等
      

  3.   


    那我如何把<%# Eval("id") %>赋值给Session呢?
      

  4.   

    asp:AccessDataSource不能放在asp:Repeater 里边的,尝试放外面传入不同参数吧。在asp:Repeater 的OnItemDataBind事件中控制
      

  5.   

    先给DefaultValue是一个固定值,看能否得到数据,如果能则说明,参数的绑定语句有问题;不能,数据库中不存该类型的数据
      

  6.   

    <asp:ControlParameter ControlID="Repeater1" DefaultValue="" Name="ID" 
                        PropertyName="SelectedValue" Type="String" /> 尝试一下