这是我写的上一条功能按钮,
可是当到最后一条的时候Label4.text从数据取出来的是空值,然后继续按 上一条或者下一条就抱错,提示用户对象未处理,
应该是取到的DataSet为Null吧,然后就报错?
求大神指教该如何解决这个问题?protected void btup_Click(object sender, EventArgs e)
        {
            Label lable4 = (Label)FormView1.FindControl("Label4");
            string sqlst = "select top 1 c.fID,c.*,d.fName AS fContractType from tContractGoods a,tContract c,(select * from tContractType) d where a.fID=c.fID and c.fContractType = d.fType and c.fID > '"+lable4.Text+"'";
            SqlConnection sqlco = new SqlConnection(strCon);
            //创建填充数据集的适配器
            SqlDataAdapter myd = new SqlDataAdapter(sqlst, sqlco);
            //创建数据集
            DataSet mys = new DataSet();
            sqlco.Open();
            myd.Fill(mys, "tContractBOM");
            FormView1.DataSource = mys;
            FormView2.DataSource = mys;
            FormView1.DataBind();
            FormView2.DataBind();
            sqlco.Close();

解决方案 »

  1.   

    试下将SQL语句输出来在查询分析器里运行看看。你这个问题应该是索引不正确造成的
      

  2.   


    大哥你有没有 认真看啊,我的目的是要如何判断这是在数据库里的最后一条数据(fID的最大值或最小值)
    然后就让上一条(下一条)的Enabled 为false.
    因为不取到空值功能是正确的
      

  3.   

    判断下你mys[0]表中是否存在数据行。在进行绑定
      

  4.   

    1.判断dataset的数据是否为空则可以判断当前是否是最后一条后者最前一条
    2.可以用viewstate保存你上一步骤点击到了哪一步,如果这是最后一条或者最前一条则把viewstate赋值给lable4这样点击下一步(上一步)就依旧可以获取到上一步骤的值不会报错
      

  5.   

    1、直接先进行取得最大和最小 存入变量 然后在显示下一页 上一页的时候加入判断即可。
    如果是每次都回发的话,就如楼上 可以存到viewstate里面 
      

  6.   

    根据数据库不同,应该从数据集应当由 rownumber,用这个来判断
      

  7.   

    个人建议 这样的问题 应该用无刷新处理好点……http://hongshengpeng.com/article/show/89.aspx
    这个不妨抽空看看,希望对你学习有帮助