后台的代码
private void drBudgetList_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
 CheckBox cbBt;if(e.Item.ItemType == ListItemType.AlternatingItem)
{
 cbBt = (CheckBox)e.Item.FindControl("cbFirst");
 cbBt.CheckedChanged += new EventHandler(chkFirstHalf);
}
}
页面里面的checkbox
<asp:CheckBox id=cbFirst runat="server" AutoPostBack="True" Checked='<%# GetCheckBoxStatus(DataBinder.Eval(Container, "DataItem.ba_Flag").ToString(), "1") %>'>
</asp:CheckBox>
现在我遇到这么个问题每次create好以后
我点datagrid里面 单数行的checkbox 都能进入chkFirstHalf这个方法里面
可是双数行就不行了 想问 这是什么原因
谢谢了

解决方案 »

  1.   

    if(e.Item.ItemType == ListItemType.AlternatingItem)
    这里粘贴错了 
    是这样的 请教各位啦if(e.Item.ItemType == ListItemType.Item)
      

  2.   

    用这个试试
    if((e.Item.ItemType == ListItemType.Item) || 
    (e.Item.ItemType == ListItemType.AlternatingItem))
      

  3.   

    两句都要,应该是这样:if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
      

  4.   

    if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    这个试过了 不行e.Item.ItemIndex!=-1 ??? 这句应该加在哪里啊?
      

  5.   

    再试试这个
    switch(e.Item.ItemType)
    {
          case ListItemType.Item:
    goto case ListItemType.AlternatingItem;
          case ListItemType.AlternatingItem:
            //添加代码
          break;
    }
      

  6.   

    string MR_No=null ;
    for(int i=0;i<this.DataGrid1.Items.Count;i++)
    {
    if(((CheckBox)DataGrid1.Items[i].FindControl("chkExport")).Checked)
    {
    if(MR_No==null)
    MR_No=this.DataGrid1.DataKeys[(int)this.DataGrid1.Items[i].ItemIndex].ToString();
    else
    MR_No=MR_No+","+this.DataGrid1.DataKeys[(int)this.DataGrid1.Items[i].ItemIndex].ToString();
    }
    }