日期:2014-05-18  浏览次数:20931 次

DATAGRID 自定义控键的分页问题
DATAGRID 中我自定义了一个IMAGE的控键,其作用就是判断邮件是否打开过,"是"连接图片1;"否"连接图片2
DATAGRID 不使用分页功能 ,则不回报错.
如果DATAGRID 开启了分页功能,就不能索引DATAGRID的下一页的记录集......
求高手帮忙!!!我等!!!!---------------------------------
:ERROR
----------------------------------
“/Index”应用程序中的服务器错误。
--------------------------------------------

索引超出范围。必须为非负值并小于集合大小。参数名: index 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index

源错误: 


行 96: for(int k=0;k<dt.Tables["fEmail_Table"].Rows.Count;k++)
行 97: {
行 98: img = (System.Web.UI.WebControls.Image)this.dtgnews.Items[k].FindControl("imgzt");
行 99: if(dt.Tables["fEmail_Table"].Rows[k]["fEmail_En"].ToString()=="0")
行 100: {
 

源文件: c:\inetpub\wwwroot\index\admin\emailshoulist.aspx.cs 行: 98 

堆栈跟踪: 


[ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index]
  System.Collections.ArrayList.get_Item(Int32 index) +91
  System.Web.UI.WebControls.DataGridItemCollection.get_Item(Int32 index) +10
  Index.Admin.Emailshoulist.DataInfo() in c:\inetpub\wwwroot\index\admin\emailshoulist.aspx.cs:98
  Index.Admin.Emailshoulist.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\index\admin\emailshoulist.aspx.cs:38
  System.Web.UI.Control.OnLoad(EventArgs e) +67
  System.Web.UI.Control.LoadRecursive() +35
  System.Web.UI.Page.ProcessRequestMain() +750

 

----------------------------------------
.CS
----------------------------------------             
string str = "";
str = "SELECT * FROM fEmail_Table ";
DataSet dt = new DataSet();
dt = Info.Select(str,"fEmail_Table");
this.dtgnews.DataSource = dt;
this.dtgnews.DataBind();
if(dt.Tables["fEmail_Table"].Rows.Count>0)
{
if (0==this.dtgnews.CurrentPageIndex)
{
this.lkbtnuppage.Visible = false;
}
else
{
this.lkbtnuppage.Visible = true;
}
if (this.dtgnews.CurrentPageIndex==this.dtgnews.PageCount-1)
{
this.lkbtnNext.Visible = false;
}
else
{
this.lkbtnNext.Visible = true;
}
this.lkbtnabc.Text = (this.dtgnews.CurrentPageIndex+1).ToString();
System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image();
for(int k=0;k<dt.Tables["fEmail_Table"].Rows.Count;k++)
{

img = (System.Web.UI.WebControls.Image)this.dtgnews.Items[k].FindControl("imgzt");
if(dt.Tables["fEmail_Table"].Rows[k]["fEmail_En"].ToString()=="0")
{
img.ImageUrl = "EmailIma/weidu.bmp";
}
else if(dt.Tables["fEmail_Table"].Rows[k]["fEmail_En"].ToString()=="1")
{
img.ImageUrl = "EmailIma/yidu.bmp";
}

}
}
---------------------------------------
.ASPX
---------------------------------------
<asp:datagrid id="dtgnews" runat="server" Height="100%" Width="570px" PageSize="3" AllowPaging="True"
AutoGenerateColumns="False" CssClass="ListTable" CellPadding="4" BorderColor="#336666" BorderWidth="1px"
BorderStyle="Double" BackColor="White" GridLines=&qu