我的cs 文件代码如下!
private void BindGood()
{
string strsql = @"select top 5 ('BBS_ReferList.aspx?SectionId='+CAST (S.SectionID   as varchar(14))) as url ,S.SectionName, R.Hits
from BBS_Sections as S Inner Join (select top 5 SectionID,Hits from BBS_Refers order by Hits desc) as  R On S.SectionID = R.SectionID";
DataSet objds = new DataSet();
objds = SqlHelper.ExecuteDataset(Operate.SqlConn,CommandType.Text,strsql);
try
{
Repeater1.DataSource = objds.Tables[0];
Repeater1.DataBind();
}
catch(Exception error)
{
Response.Write(error.ToString());
}
}
页面邦定代码如下:
<asp:repeater id="Repeater1" runat="server">
<ItemTemplate>
<asp:Image id="Image2" runat="server" ImageUrl="../image/bbs_1.gif" Width="14px" Height="15px"></asp:Image>
<a href='<%#DataBinder.Eval(Container.DataItem,"url")%>'>
<%#DataBinder.Eval(Container.DataItem,"SectionName")%>
</a>(<%#DataBinder.Eval(Container.DataItem,"Hits")%>)
<br>
</ItemTemplate>
</asp:repeater>我现在想做的事情是Repeater每换一行输出数据我就把前面的图片换成另外一个
image/bbs_1.gif;
也就是说,Repeater如果输出5行数据(每行一列)的话!平时前面会有5个一样的图标。我想把把这个图片换成5 个不同的图片怎么办?谢谢!

解决方案 »

  1.   

    <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
              <div>
                <img src="<%#Container.ItemIndex  %>.gif" />
                <%#Eval("学生姓名") %>
              </div>
            </ItemTemplate>
          </asp:Repeater>
      

  2.   

    asp.net 2.0以下版本
    <asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
    <div>
      <img src="<%#Container.ItemIndex.ToString()  %>.gif" />
      <%#DataBinder.Eval(Container.DataItem,"学生姓名")%>
    </div>
    </ItemTemplate>另外,还可以在绑定事件里通过e.Items.FindControl("Image2")实现
      

  3.   

    protected void Repeater1_ItemDataBound( object sender, RepeaterItemEventArgs e )
      {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
     
          Image Image2 = (Image)e.Item.FindControl("Image2");
    ///下面的地址从哪来自己决定啊
          Image2.ImageUrl = "../" + e.Item.ItemIndex.ToString() + ".gif";
        }
      }
      

  4.   

    报错!Image 不是明确的引用!是否要添加引用。。另注:您说的下面的那地址!我是想添加5个图片。这样该怎么写?难道重复写5次?我很笨,希望您不要介意!
      

  5.   

    protected void Repeater1_ItemDataBound( object sender, RepeaterItemEventArgs e )
    {
      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
      {
        if (e.Item.ItemIndex < 5)
        {
          System.Web.UI.WebControls.Image Image2 = (System.Web.UI.WebControls.Image)e.Item.FindControl("Image2");
          System.Data.Common.DbDataRecord db = (System.Data.Common.DbDataRecord)e.Item.DataItem;
          Image2.ImageUrl = "Upload/" + db["PhotoPath"].ToString();
        }
      }
    }
      

  6.   

    如我要明确引用image/目录下的bbs_no1.gif  - image/bbs_no5.gif  是否
     Image2.ImageUrl = "image/" + db["bbs_no1.gif"].ToString();
    ?
      

  7.   

    我很笨!刚学.net不长,望您不要见怪!
      

  8.   

    protected void Repeater1_ItemDataBound( object sender, RepeaterItemEventArgs e )
      {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
          System.Web.UI.WebControls.Image Image2 = (System.Web.UI.WebControls.Image)e.Item.FindControl("Image2");
          if (e.Item.ItemIndex < 5)
          {        
            
           // System.Data.Common.DbDataRecord db = (System.Data.Common.DbDataRecord)e.Item.DataItem; //DataReader数据源使用
            System.Data.DataView db = (System.Data.DataView)e.Item.DataItem; //DataSet数据源使用
            Image2.ImageUrl = "Upload/" + db["PhotoPath"].ToString();
          }
          else
          {
            Image2.Visible = false;
          }
        }
      }
      

  9.   

    Image2.ImageUrl = "Upload/" + db["PhotoPath"].ToString();
      这句话是不是添加Upload目录下的PhotoPath图片来?
      

  10.   

    他报"PhotoPath"].ToString()这里参数无法从string 转换为 int
      

  11.   

    System.Data.DataRowView db = (System.Data.DataRowView)e.Item.DataItem; //DataSet数据源使用
    Image2.ImageUrl = "Upload/" + db["PhotoPath"].ToString();是啊,根据你的路径自己调整啊
      

  12.   

    我主要不明白db["PhotoPath"].ToString();这一句,如我要明确引用image/目录下的bbs_no1.gif  - image/bbs_no5.gif  是否
     Image2.ImageUrl = "image/" + db["bbs_no1.gif"].ToString();
    但这样的话,我每个文件的名字是不同的阿?还是我
     Image2.ImageUrl = "image/" + db["bbs_no1.gif"].ToString(); Image2.ImageUrl = "image/" + db["bbs_no1.gif"].ToString(); Image2.ImageUrl = "image/" + db["bbs_no1.gif"].ToString(); Image2.ImageUrl = "image/" + db["bbs_no1.gif"].ToString(); Image2.ImageUrl = "image/" + db["bbs_no1.gif"].ToString();
     
    这样!把里面的bbs_no1.gif改成我每个文件的名字?!
      

  13.   

    Image2.ImageUrl = "image/bbs_no" + (e.Item.ItemIndex+1)ToString() + ".gif";
      

  14.   

    Image2.ImageUrl = "image/bbs_no" + (e.Item.ItemIndex+1).ToString() + ".gif";
      

  15.   

    System.InvalidCastException: 指定的转换无效。 at Web.BBS.UserControls.UC_BBS_Good.Repeater1_ItemDataBound(Object sender, RepeaterItemEventArgs e) in f:\work\cwcn\web\bbs\usercontrols\uc_bbs_good.ascx.cs:line 73 at System.Web.UI.WebControls.Repeater.OnItemDataBound(RepeaterItemEventArgs e) at System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) at System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource) at System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) at System.Web.UI.WebControls.Repeater.DataBind() at Web.BBS.UserControls.UC_BBS_Good.BindGood() in f:\work\cwcn\web\bbs\usercontrols\uc_bbs_good.ascx.cs:line 58
      

  16.   

    图片路径显示http://localhost/Web/BBS/0.gif
      

  17.   

    73行代码为System.Data.Common.DbDataRecord db = (System.Data.Common.DbDataRecord)e.Item.DataItem;
      

  18.   

    你要只显示图片就只要
    protected void Repeater1_ItemDataBound( object sender, RepeaterItemEventArgs e )
      {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
          System.Web.UI.WebControls.Image Image2 = (System.Web.UI.WebControls.Image)e.Item.FindControl("Image2");
    Image2.ImageUrl = "image/bbs_no" + (e.Item.ItemIndex+1).ToString() + ".gif";
        }
      }
      

  19.   

    System.Data.DataView
    不是
    System.Data.Common.DbDataRecord
      

  20.   

    System.NullReferenceException: 未将对象引用设置到对象的实例。 at Web.BBS.UserControls.UC_BBS_Good.Repeater1_ItemDataBound(Object sender, RepeaterItemEventArgs e) in f:\work\cwcn\web\bbs\usercontrols\uc_bbs_good.ascx.cs:line 71 at System.Web.UI.WebControls.Repeater.OnItemDataBound(RepeaterItemEventArgs e) at System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) at System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource) at System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) at System.Web.UI.WebControls.Repeater.DataBind() at Web.BBS.UserControls.UC_BBS_Good.BindGood() in f:\work\cwcn\web\bbs\usercontrols\uc_bbs_good.ascx.cs:line 58
      

  21.   

    private void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    System.Web.UI.WebControls.Image Image2 = (System.Web.UI.WebControls.Image)e.Item.FindControl("Image2");
    Image2.ImageUrl = "image/bbs_no" + (e.Item.ItemIndex+1).ToString() + ".gif";
    }
    }
      

  22.   

    <%@ Page language="c#"  Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication16.WebForm1" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>WebForm1</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body>
    <form runat="server">
    <asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
    <div>
    <asp:Image ID="Image2" runat="server" ImageUrl="" Width="14px" Height="15px"></asp:Image>
    <%#DataBinder.Eval(Container.DataItem, "Title")%>
    </div>
    </ItemTemplate>
    </asp:Repeater>
    </form>
    </body>
    </HTML>using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace WebApplication16
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Repeater Repeater1;
    private void Page_Load(object sender, System.EventArgs e)
    {
    if (!IsPostBack)
    {
    string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\WebSite1\App_Data\ASPNET20Book.mdb;";
    System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection(ConnectionString);
    cn.Open();
    string sql = "select * from [Student]";
    System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(sql, cn);
    System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    Repeater1.DataSource = dr;
    Repeater1.DataBind();
    dr.Close();
    cmd.Dispose();
    cn.Dispose();
    }
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Repeater1.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.Repeater1_ItemDataBound);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    System.Web.UI.WebControls.Image Image2 = (System.Web.UI.WebControls.Image)e.Item.FindControl("Image2");
    Image2.ImageUrl = "image/bbs_no" + (e.Item.ItemIndex + 1).ToString() + ".gif";
    }
    }
    }
    }
      

  23.   

    谢谢大哥!找到原因了,我页面没有Image2.......给分!谢谢!