问题一:
页面部分代码:
<asp:datagrid id="Lists" runat="server" Width="850px" Visible="False" AllowPaging="True" OnPageIndexChanged="list_Page" AutoGenerateColumns="False" Font-Size="12px" >
程序代码:
string SQL="Select * from VWOnOffList where ……";查的是视图
当查询条件查到数据时显示正常,当查不到数据时 页面报错:
无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。 
怎么回事,以前好像没这种情况的问题二:
<asp:BoundColumn DataField="leave" HeaderText="事 假"></asp:BoundColumn>
当查询出来的值是0的时候显示空 不要显示0 怎么做?

解决方案 »

  1.   

    问题一,你的SQL语句出错了,查出来的DataSet是null跟没有记录是不同的两个概念
    问题二格式问题,可以在SQL里进行替换,也可以用模版列,很多方法都可以实现
      

  2.   

    但是我得到SQL语句在查询分析器里执行 得不到记录 但也没有错呀
      

  3.   

    设置断点跟踪查一下currentpageindex的值,肯定是超出范围了
      

  4.   

    1.当 AllowPaging 设置为真并且选定的数据源不实现 ICollection 时(也就是查询不到数据时),AllowCustomPaging 必须为真(自定义分页功能必须设置为true)2.可以在查询的时候直接判断
    select (CASE  leave WHEN 0 THEN '' ELSE leave END) AS leave from table
      

  5.   

    在查询事件中初始化分页:
    Lists.CurrentPageIndex = 0 ;
      

  6.   

    1.数据绑定的时候加个判断:
      if(Lists.CurrentPageIndex<0||Lists.CurrentPageIndex>Lists.PageCount)
      {
         Lists.CurrentPageIndex=0;
      }2.使用模版列  <Columns>
      <asp:TemplateColumn HeaderText ="事 假">
      <ItemTemplate>
      <%#DataBinder.Eval(Container.DataItem,"leave").ToString().Trim()=="0"?"":"是"%>
      </ItemTemplate>
      </asp:TemplateColumn>
      </Columns>
      

  7.   

    1.数据绑定的时候加个判断:
    if(DataSet==null || DataSet.DataTable.Rows.Count==0){
    //不绑定数据
    Lists.CurrentPageIndex=0;
    }2.使用case, 同上