if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)

解决方案 »

  1.   

    DataList中的Item有几种类型,一种是一般的Item(一般是第1、3、5、7...行),一种是AlternatingItem(表示间隔的行,一般是第2、4、6、8...行),其他还有SelectedItem、EditItem等等
    在你的程序中,只处理了ListItemType.Item的情况,也就是只处理了第1、3、5、7...行的情况,而间隔的Item就没有处理了。所以会出现你帖子中的情况
    建议将if判断改为:
    if (e.Item.ItemIndex >= 0)
    {
    ...
    }
    这样不管是ListItemType.Item还是AlternatingItem,或者SelectedItem、EditItem,都可以做相同处理
      

  2.   

    多谢楼上兄台的解答。我刚才按if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)试了一下,发现不行,提示好下:

    异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 71:  DataSet ds=new DataSet();
    行 72:  myAdapter.Fill(ds,"tb_RegisterInfo");
    行 73:  myGrid.DataSource=ds.Tables["tb_RegisterInfo"].DefaultView;
    行 74:  myGrid.DataBind();
    行 75:  }
     
    ”我还有一个用datagrid嵌套的例子,是用的datarelation,但是也是有问题,可以帮我看盾吗? public void BindGrid()
    {
    SqlDataAdapter myAdapter=new SqlDataAdapter(strSql,myConn);
    DataSet ds=new DataSet();
    myAdapter.Fill(ds);
    ds.Tables[0].TableName="tb_School";
    ds.Tables[1].TableName="tb_RegisterInfo";
    DataColumn parent=ds.Tables["tb_School"].Columns["i_SchoolID"];
    DataColumn child=ds.Tables["tb_RegisterInfo"].Columns["i_SchoolID"];
    DataRelation myRelation = new DataRelation("myRelation",parent,child,false);
    ds.Relations.Add(myRelation);
    DGrid1.DataSource=ds.Tables["tb_School"].DefaultView;
    DGrid1.DataBind();
    }提示错误是这句DataRelation myRelation = new DataRelation("myRelation","tb_School","tb_RegisterInfo",parent,child,false);里面的参数有问题。可是我我已经按照帮助里的标准写的。
      

  3.   

    楼上大哥,if (e.Item.ItemIndex >= 0)
    {
    ...
    }
    也不行呀。提示错误两个一模一样。
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 72:  DataSet ds=new DataSet();
    行 73:  myAdapter.Fill(ds,"tb_RegisterInfo");
    行 74:  myGrid.DataSource=ds.Tables["tb_RegisterInfo"].DefaultView;
    行 75:  myGrid.DataBind();
    行 76:  }
     
      

  4.   

    Alternatingtemplet和itemtemplet交互显示的.你可以在页面的代码种把
    <Alternatingtemplet>
    </Alternatingtemplet>部分删掉就可以了.