none
GridView取值问题。 RRS feed

  • 问题

  • 前台
    <asp:GridView ID="grdFile" runat="server" AutoGenerateColumns=False 
                Width="100%">
                <Columns>
                    <asp:TemplateField HeaderText="文件名">
                        <ItemTemplate>
                          <img src='<%=imgPath %>'>
                          <a href="openfile.aspx?ID=<%=ID %>" target="_blank" title="">
                          <%=FileName%></a>
                         <%=ReleaseTime%>
                        </ItemTemplate>
                        <HeaderStyle />
                        <ItemStyle Width="40%" />
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="大小">
                    <ItemTemplate>
                    <%=info.Length/10*0.01%>KB
                    </ItemTemplate>
                        <ItemStyle Width="15%" />
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="下载">
                    <ItemTemplate>
                  <a href="DownLoad.aspx?ID=<%=ID %>">下载</a>
                    </ItemTemplate>
                        <HeaderStyle  />
                        <ItemStyle Width="15%" />
                    </asp:TemplateField>
                    <asp:BoundField DataField="Category" HeaderText="文件类型">
                    <HeaderStyle  />
                    <ItemStyle Width="15%" />
                    </asp:BoundField>
                    <asp:BoundField DataField="UpLoadName" HeaderText="上传者">
                    <ItemStyle Width="15%" />
                    </asp:BoundField>
                </Columns>
            </asp:GridView>
    后台
    public partial class Common_FileDownLoad_Down : System.Web.UI.Page
    {
        public string imgPath;
        public Guid ID;
        public System.IO.FileInfo info;
        public string FileName;
        public DateTime ReleaseTime;
        public string UpLoadName;
        private IFileDA da = DALFactory.CreateFileDA();
        protected void Page_Load(object sender, EventArgs e)
        {
            IList<File> file = da.GetFileAll();
            foreach (File f in file)
            {
                info = new System.IO.FileInfo(Server.MapPath("../UploadFile/Images/" + f.FileName));
                 int start = f.FileName.LastIndexOf(".") + 1;
                 string hz = f.FileName.Substring(start);
                 imgPath = "../UploadFile/icon/" + hz + ".gif";
                 FileName = f.FileName;
                 ID = f.ID;
                 ReleaseTime = Convert.ToDateTime(f.ReleaseTime);
                 UpLoadName = f.UpLoadName;

            }
            
            grdFile.DataSource = file;
            grdFile.DataBind();
        }
    }
    代码有什么问题吗,为什么girdView显示的是同一个(既重复的数据)。请问该怎么解决。
    2009年11月13日 17:19

答案

全部回复

  • 你好!

    因为你的在界面上始终使用 <%=ID %> 这种方式, 而 ID 始终是一个,这里使用 <%#Eval("ID")%>

    知识改变命运,奋斗成就人生!
    2009年11月14日 2:30
    版主
  • 改了,还是重复的数据。
    2009年11月14日 8:02
  • 你新建一个类 files
     

       public class files
        {
            private string imgPath;
    
            public string ImgPath
            {
                get { return imgPath; }
                set { imgPath = value; }
            }private Guid iD;
    
            public Guid ID
            {
                get { return iD; }
                set { iD = value; }
            }private System.IO.FileInfo info;
            public System.IO.FileInfo Info
            {
                get { return info; }
                set { info = value; }
            }
            private string fileName;
            public string FileName
            {
                get { return fileName; }
                set { fileName = value; }
            }
            private DateTime releaseTime;
            public DateTime ReleaseTime
            {
                get { return releaseTime; }
                set { releaseTime = value; }
            }
            private string upLoadName;
            public string UpLoadName
            {
                get { return upLoadName; }
                set { upLoadName = value; }
            }
        }
    }
    
       private IFileDA da = DALFactory.CreateFileDA();
        protected void Page_Load(object sender, EventArgs e)
        {
            IList<File> file = da.GetFileAll();
          List<files> files=new List<files> ();
            foreach (File f in file)
            { 
                files ff=new files ();
               ff.Info = new System.IO.FileInfo(Server.MapPath("../UploadFile/Images/" + f.FileName));
                 int start = f.FileName.LastIndexOf(".") + 1;
                 string hz = f.FileName.Substring(start);
                ff.ImgPath = "../UploadFile/icon/" + hz + ".gif";
                ff.FileName = f.FileName;
                 ff.ID = f.ID;
                 ff.ReleaseTime = Convert.ToDateTime(f.ReleaseTime);
                ff.UpLoadName = f.UpLoadName;
                files.Add(ff);
            }
            
            grdFile.DataSource = files;
            grdFile.DataBind();
        }
    }
    这里使用 比如 <%#Eval("ID")%>这样写法
    • 已编辑 mldark 2009年11月14日 8:56 缺少一些方法
    2009年11月14日 8:40
  • 把相似的问题同时也改了, 如 <%=FileName%>, <%=ReleaseTime%> 
    知识改变命运,奋斗成就人生!
    2009年11月14日 8:43
    版主
  • 把相似的问题同时也改了, 如 <%=FileName%>, <%=ReleaseTime%> 
    知识改变命运,奋斗成就人生!

     没有区别啊 <%=变量%>始终执行一次  还是重负值
    2009年11月14日 8:53
  • 你需要 在GridView的绑定事件里赋值,而不是Page_Load
    【孟子E章】
    2009年11月14日 11:58
    版主