前台 <asp:GridView ID="ResouMenuID" DataKeyNames="ResourceID" runat="server"
AutoGenerateColumns="false" Width="100%" AllowPaging="True" PageSize="15"
onpageindexchanging="ResouMenuID_PageIndexChanging"
ondatabound="ResouMenuID_DataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Image runat="server" ID="image1" />
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField DataTextField="Title" DataNavigateUrlFields="ResourceID" DataNavigateUrlFormatString="Resource/Detail.aspx?rid={0}" />
</Columns>
<EmptyDataTemplate>
没有数据!
</EmptyDataTemplate>
<PagerStyle HorizontalAlign="Right" />
</asp:GridView>
后台:
private void Bind()
{
dbMethod dm=new dbMethod();
int menuID = int.Parse(Request.QueryString["mID"].ToString());
ds = dm.getReosurceByMenuIDAndStateID(menuID);
this.ResouMenuID.DataSource = ds;
this.ResouMenuID.DataBind();
}
protected void ResouMenuID_DataBound(object sender, EventArgs e)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Image image = (Image)this.ResouMenuID.Rows[i].FindControl("image1"); string fileName = ds.Tables[0].Rows[i]["FileName"].ToString(); string ex = fileName.Substring(fileName.IndexOf(".") + 1).ToLower(); if (ex == "doc" || ex == "docx" || ex == "wps")
image.ImageUrl = "image/resimages/doc.png";
if (ex == "xls" || ex == "xlsx")
image.ImageUrl = "image/resimages/xls.png";
if (ex == "ppt" || ex == "pptx")
image.ImageUrl = "image/resimages/ppt/png";
if (ex == "rar" || ex == "zip")
image.ImageUrl = "image/resimages/rar.png";
if (ex == "gif" || ex == "jpg" || ex == "jpeg" || ex == "bmp" || ex == "psd")
image.ImageUrl = "image/resimages/jpg.png";
if (ex == "rtf" || ex == "txt")
image.ImageUrl = "image/resimages/txt.png";
}
// Bind();
}
小图片存在本地文件夹内,没有存入数据库,在数据库中也没有链接地址。根据文件扩展名决定显示什么图片
问题:不分页一切都没有问题,一旦分页,就出现“索引超出范围”错误,如果加上Bind()方法,就会出现“该页无法显示”的错误。
希望大家帮忙!
AutoGenerateColumns="false" Width="100%" AllowPaging="True" PageSize="15"
onpageindexchanging="ResouMenuID_PageIndexChanging"
ondatabound="ResouMenuID_DataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Image runat="server" ID="image1" />
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField DataTextField="Title" DataNavigateUrlFields="ResourceID" DataNavigateUrlFormatString="Resource/Detail.aspx?rid={0}" />
</Columns>
<EmptyDataTemplate>
没有数据!
</EmptyDataTemplate>
<PagerStyle HorizontalAlign="Right" />
</asp:GridView>
后台:
private void Bind()
{
dbMethod dm=new dbMethod();
int menuID = int.Parse(Request.QueryString["mID"].ToString());
ds = dm.getReosurceByMenuIDAndStateID(menuID);
this.ResouMenuID.DataSource = ds;
this.ResouMenuID.DataBind();
}
protected void ResouMenuID_DataBound(object sender, EventArgs e)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Image image = (Image)this.ResouMenuID.Rows[i].FindControl("image1"); string fileName = ds.Tables[0].Rows[i]["FileName"].ToString(); string ex = fileName.Substring(fileName.IndexOf(".") + 1).ToLower(); if (ex == "doc" || ex == "docx" || ex == "wps")
image.ImageUrl = "image/resimages/doc.png";
if (ex == "xls" || ex == "xlsx")
image.ImageUrl = "image/resimages/xls.png";
if (ex == "ppt" || ex == "pptx")
image.ImageUrl = "image/resimages/ppt/png";
if (ex == "rar" || ex == "zip")
image.ImageUrl = "image/resimages/rar.png";
if (ex == "gif" || ex == "jpg" || ex == "jpeg" || ex == "bmp" || ex == "psd")
image.ImageUrl = "image/resimages/jpg.png";
if (ex == "rtf" || ex == "txt")
image.ImageUrl = "image/resimages/txt.png";
}
// Bind();
}
小图片存在本地文件夹内,没有存入数据库,在数据库中也没有链接地址。根据文件扩展名决定显示什么图片
问题:不分页一切都没有问题,一旦分页,就出现“索引超出范围”错误,如果加上Bind()方法,就会出现“该页无法显示”的错误。
希望大家帮忙!
这是自带的分页事件:
protected void ResouMenuID_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.ResouMenuID.PageIndex = e.NewPageIndex;
Bind();
}
ResouMenuID_DataBound(object sender, EventArgs e)
这个方法里面报错的吧? 你加个判断,判断 fileName 是否为空
說白了就有幾條數據,就要執行幾次的。
LZ你每行執行都是一樣的,所以fileName一直是一个值
Image image = (Image)this.ResouMenuID.Rows[i].FindControl("image1");
string fileName = ds.Tables[0].Rows[i]["FileName"].ToString();
string ex = fileName.Substring(fileName.IndexOf(".") + 1).ToLower();
請樓主多仔細檢查調試問題。
显然LZ 的数据大于10 所以
Image image = (Image)this.ResouMenuID.Rows[i].FindControl("image1");超出索引
{
}
这是有问题的ds.Tables[0].Rows.Count这个是你一页有多少个才对啊
protected void ResouMenuID_DataBound(object sender, EventArgs e)
{
for (int i = ResouMenuID.PageIndex*ResouMenuID.PageSize; i < ResouMenuID.PageSize*(1+ResouMenuID.PageIndex); i++)
{
Image image = (Image)this.ResouMenuID.Rows[i].FindControl("image1"); string fileName = ds.Tables[0].Rows[i]["FileName"].ToString(); string ex = fileName.Substring(fileName.IndexOf(".") + 1).ToLower(); if (ex == "doc" || ex == "docx" || ex == "wps")
image.ImageUrl = "image/resimages/doc.png";
if (ex == "xls" || ex == "xlsx")
image.ImageUrl = "image/resimages/xls.png";
if (ex == "ppt" || ex == "pptx")
image.ImageUrl = "image/resimages/ppt/png";
if (ex == "rar" || ex == "zip")
image.ImageUrl = "image/resimages/rar.png";
if (ex == "gif" || ex == "jpg" || ex == "jpeg" || ex == "bmp" || ex == "psd")
image.ImageUrl = "image/resimages/jpg.png";
if (ex == "rtf" || ex == "txt")
image.ImageUrl = "image/resimages/txt.png";
}
// Bind();
}
public string GetImg(object id)
{}
或
理解使用Page.ResolveUrl
Image image =e.Row.FindControl("image1") as Image;
public string GetImg(object FileName)
{
string fileName = (string)FileName;
string ex = fileName.Substring(fileName.IndexOf(".") + 1).ToLower();
string imgUrl="";
if (ex == "doc" || ex == "docx" || ex == "wps")
imgUrl= "image/resimages/doc.png";
if (ex == "xls" || ex == "xlsx")
imgUrl= "image/resimages/xls.png";
if (ex == "ppt" || ex == "pptx")
imgUrl= "image/resimages/ppt/png";
if (ex == "rar" || ex == "zip")
imgUrl= "image/resimages/rar.png";
if (ex == "gif" || ex == "jpg" || ex == "jpeg" || ex == "bmp" || ex == "psd")
imgUrl= "image/resimages/jpg.png";
if (ex == "rtf" || ex == "txt")
imgUrl= "image/resimages/txt.png"; return imgUrl;
}
向高手学习一下,顺便写写全,呵呵
LZ 难道你是 用 gv 自带 的 分页???
。。
还是自己写分页吧(建议)