改成这样试试
foreach(DataGridItem dgi in MyDataGrid1.Items)
{
CheckBox ChKremove = (CheckBox) dgi.FindControl("Remove");
if (remove != null)
{
                   try 
{
if (remove.Checked == true) //此行选定了删除,则需要修改数据库
{
Label1.Text = remove.Text;              DoSomething();
}
else
Label1.Text="你没有选定任何要删除的书";
}
catch(Exception ex) 
{
MyError.Text = ex.Message;
}                  }
}

解决方案 »

  1.   

    错了,下面这样
    foreach(DataGridItem dgi in MyDataGrid1.Items)
    {
    CheckBox remove1 = (CheckBox) dgi.FindControl("Remove");
    if (remove != null)
    {
                       try 
    {
    if (remove1.Checked == true) //此行选定了删除,则需要修改数据库
    {
    Label1.Text = remove1.Text;              DoSomething();
    }
    else
    Label1.Text="你没有选定任何要删除的书";
    }
    catch(Exception ex) 
    {
    MyError.Text = ex.Message;
    }                  }
    }
      

  2.   

    晕了,你用的是DataList?
    那就把这换一下
    foreach(DataList dgi in MyList.Items)
      

  3.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=F43AF9A5-2C2E-4AA6-E976-21E9569F5A8A
    http://dotnet.aspx.cc/ShowDetail.aspx?id=FF130C7F-3650-4DA6-8943-8AA4AF3E3459
      

  4.   

    参考:
    private void Button1_Click(object sender, System.EventArgs e)
    {

    string sMainProjectID;
    string sTsbh;
    string sSubProjectName;
    string sSubProID;
    string sSpecialty;
    string sSpecialtyID;
    DateTime now = DateTime.Now;

    //信息数据结构表 
    //vCommandType, string vbsbh,string vdxgcbh,string vzymcid,string vzymc,string vzyryid,
    //string vzyrymc,string vzgcbh,string vRegeditMan ,string vRegeditDate
    DataTable oDataTable = new DataTable("SelectInfor");
    DataColumnCollection columns = oDataTable.Columns;
    columns.Add("CommandType",typeof(System.String));
    columns.Add("bsbh",typeof(System.String));
    columns.Add("dxgcbh",typeof(System.String));
    columns.Add("zymcid",typeof(System.String));
    columns.Add("zymc",typeof(System.String));
    columns.Add("zyryid",typeof(System.String));
    columns.Add("zyrymc",typeof(System.String));
    columns.Add("zgcbh",typeof(System.String));
    columns.Add("RegeditMan",typeof(System.String));
    columns.Add("RegeditDate",typeof(System.String));
    columns.Add("ImprotanceLevel",typeof(System.String));
    DataRow UserInfoRow = Customer.Tables[CustomerData.CUSTOMERS_TABLE].Rows[0];
    string vSubCensor =UserInfoRow[CustomerData.LOGOID_FIELD].ToString();
    string vSubCensorName = UserInfoRow[CustomerData.NAME_FIELD].ToString();
    //循环读出选中的数据
    foreach( DataListItem oDataListItem in DataList1.Items)
    {
    string[] oArrayLsit  = new string[11];
    //注意数组越界的情况
    sTsbh  = ((Label)oDataListItem.FindControl("tsbh")).Text;
    sSubProjectName = ((Label)oDataListItem.FindControl("gcmc")).Text;
    sSubProID = ((Label)oDataListItem.FindControl("dxgcbh")).Text;
                    sMainProjectID = zgxbh.Value; DataGrid oDataGrid = (DataGrid)oDataListItem.FindControl("projectinfo");
    foreach(DataGridItem oDataGridItem in oDataGrid.Items )
    {
    CheckBox oCheckBox  =(CheckBox)oDataGridItem.FindControl("mycheck");

    DropDownList oDropDownList = (DropDownList)oDataGridItem.FindControl("mydropdownlist");
    if(oCheckBox.Checked)
    {
    sSpecialtyID= ((Label)oDataGridItem.FindControl("zymcidColum")).Text;
    sSpecialty = ((Label)oDataGridItem.FindControl("zymyColumn")).Text;
                            string sCareerArr =  oDropDownList.SelectedValue.ToString();
    string ImprotancLevel = ((DropDownList)oDataGridItem.FindControl("ImprotanceLevel")).SelectedValue.ToString();
    /*表的结构
     * columns.Add("CommandType",typeof(System.String));
    columns.Add("bsbh",typeof(System.String));
    columns.Add("dxgcbh",typeof(System.String));
    columns.Add("zymcid",typeof(System.String));
    columns.Add("zymc",typeof(System.String));
    columns.Add("zyryid",typeof(System.String));
    columns.Add("zyrymc",typeof(System.String));
    columns.Add("zgcbh",typeof(System.String));
    columns.Add("RegeditMan",typeof(System.String));
    columns.Add("RegeditDate",typeof(System.String));
     * */
        string[] my= new string[2];
    my = sCareerArr.Split('|');
    oArrayLsit[0] = "add";
    oArrayLsit[1] = sTsbh;
    oArrayLsit[2] = sSubProID;
                            oArrayLsit[3] = sSpecialtyID;
    oArrayLsit[4] = sSpecialty;
    oArrayLsit[5] = my[0];
    oArrayLsit[6] = my[1];
    oArrayLsit[7] = sMainProjectID;
    oArrayLsit[8] = vSubCensorName;
    oArrayLsit[9] =  now.ToString();
    oArrayLsit[10] = ImprotancLevel;
    oDataTable.Rows.Add(oArrayLsit);
    }
    }
    }
    bool SucceOrFalse = (new FAssignPro()).SaveInforAssinRY(oDataTable);
    if(SucceOrFalse)

    {
    Response.Write("<script>alert('分配成功')</script>");
        Response.Write("<script>window.open('addzyry.aspx','MainFrameSetContents');</script>");
    } else
    {
    Response.Write("<script>alert('分配失败\\n原因\\n可能该单项工程已分配\\n可能该项目的状态信息找不到\\n可能数据库发生错误\\n有问题请联系管理员!\\t\\t\\t')</script>");
    Button1.Attributes.Add("onclick","return confrimDelete()");
    }

            
    }
      

  5.   


    我在一个页面中使用下面写法可以实现void UpdateReadingCartDatabase() //更新ReadingCart数据库
    {
    ReadingCartDB cart = new ReadingCartDB(); // 获取当前用户读者卡ID
    string CartId = cart.GetReadingCartId(); int ReaderId=0;
    if(User.Identity.Name != null && Regex.IsMatch(User.Identity.Name, @"^\d+$"))//判断是否为数字,否则转换出错
    {
    ReaderId = Int32.Parse(User.Identity.Name);//获得ReaderId,这里可能不是数字
    }
    else//如果还没有登陆,转向登陆,但是登陆后回不来了,造成下面的语句没有执行,结果出现重复添加的情况
    {
    Response.Redirect("Login.aspx");

    }


    // 遍历所有行
    for (int i=0; i < MyList.Items.Count; i++) 
    {
    Label lbBookId = (Label) MyList.Items[i].FindControl("BookId");//遍历BookId bool ifonshelf = cart.IfOnShelf(Int32.Parse(lbBookId.Text),ReaderId);//判断是否有重复书 if(ifonshelf)//发现重复书
    {
    MyErrorBook.Text += lbBookId.Text +"、"; //重复书ID // 获取相关行的控件
    CheckBox remove = (CheckBox) MyList.Items[i].FindControl("Remove");//在第i行找到ID为Remove的控件 remove.Checked = true;

    } }

    if(MyErrorBook.Text.Length > 0)
    {
    MyErrorBook.Text = MyErrorBook.Text.Remove(MyErrorBook.Text.Length-1,1);

    MyErrorBook.Text +=" 号书已经在你的书架中了!重复书籍将从读书卡中删除";
    }
    for (int i=0; i < MyList.Items.Count; i++) //删除所有标记要删除的行
    {
    // 获取相关行的控件
    CheckBox remove = (CheckBox) MyList.Items[i].FindControl("Remove");//在第i行找到ID为Remove的控件

    try 
    {
    if (remove.Checked == true) //此行选定了删除,则需要修改数据库
    {
    Label lblBookId = (Label) MyList.Items[i].FindControl("BookId");//在第i行找到ID为BookId的控件 cart.RemoveItem(CartId, Int32.Parse(lblBookId.Text));//删除这个卡中的对应此BookId的书
    }
    }
    catch(Exception ex) 
    {
    MyError.Text = ex.Message;
    }
    }
    //return true;//
    } private void CheckoutBtn_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    {

    //更新ReadingCart数据库
    UpdateReadingCartDatabase();

             ReadingCartDB cart = new ReadingCartDB(); // 获得Reading cart ID
    string CartId = cart.GetReadingCartId(); // 卡不空,转移到checkout页面
    if (cart.GetItemCount(CartId) !=0) 
    {
    Response.Redirect("Checkout.aspx");
    }
    else 
    {
    MyError.Text = "您的读书卡中没有任何信息!";
    }
    }
    }
    ==================================
    例外一个页面,我依葫芦画瓢,就不行了...
      

  6.   

    看了你的代码,你是在遍历grid的循环里判断check状态的,如果你不想让你的lable显示那句话除非你所有的条目都是check=true的,呵呵
    正是因为你的grid里又没被钩选的项目,所以循环执行一遍以后lable总是那句话
    呵呵
      

  7.   

    我知道没人愿意看那么长的代码,其中很多是无关的,就那个FOR语句是问题所在
      

  8.   

    CheckBox remove = (CheckBox) MyList.Items[i].FindControl("Remove");换成下面的
    CheckBox remove = (CheckBox) MyList.Items[i].Cells[x].FindControl("Remove");
    //x是Remove在MyList第几列
      

  9.   

    要是还不行就这样:
    CheckBox remove = (CheckBox) MyList.Items[i].Cells[x].Controls[0].FindControl("Remove");
    //x是Remove在MyList第几列,如果按你图片上的就是2--Cells[2]
      

  10.   


    总结:代码如下,放在一个按钮事件中处理问题就是 shelf.RemoveItem(192,60);//删除这个书架中的对应此BookId的书 这行代码死活不执行,不管我选了没选CheckBoxvoid UpdateShelfListDatabase() //更新ShelfList数据库
    {
    ShelfsDB shelf = new ShelfsDB(); for (int i=0; i < MyList.Items.Count; i++) //删除所有标记要删除的行
    {
    // 获取相关行的控件
    //CheckBox remove = (CheckBox) MyList.Items[i].FindControl("Remove");//在第i行找到ID为Remove的控件CheckBox remove = (CheckBox) MyList.Items[i].Cells[5].Controls[0].FindControl("Remove"); try 
    {
    if (remove.Checked == true) //此行选定了删除,则需要修改数据库
    {
    Label lblShelfId = (Label)MyList.Items[i].FindControl("ShelfId");//在第i行找到ID为ShelfId的控件 shelf.RemoveItem(192,60);//删除这个书架中的对应此BookId的书
    }
    //else
    //Label1.Text="你没有选定任何要删除的书";
    }
    catch(Exception ex) 
    {
    MyError.Text = ex.Message;
    }
    }

    }
      

  11.   

    最后版本:
    void UpdateShelfListDatabase() //更新ShelfList数据库
    {
    ShelfsDB shelf = new ShelfsDB(); for (int i=0; i < MyList.Items.Count; i++) //删除所有标记要删除的行
    {
    // 获取相关行的控件
    CheckBox remove = (CheckBox) MyList.Items[i].FindControl("Remove");//在第i行找到ID为Remove的控件 try 
    {
    if (remove.Checked == true) //此行选定了删除,则需要修改数据库
    {
    Label lblShelfId = (Label)MyList.Items[i].FindControl("ShelfId");//在第i行找到ID为ShelfId的控件 shelf.RemoveItem(Int32.Parse(lblShelfId.Text),Int32.Parse(MyList.Items[i].Cells[3].Text));//删除这个书架中的对应此BookId的书
    }
    //else
    //Label1.Text="你没有选定任何要删除的书";
    }
    catch(Exception ex) 
    {
    MyError.Text = ex.Message;
    }
    }

    }
      

  12.   

    foreach(System.Web.UI.WebControls.DataGridItem itemtest in this.DataGrid1.Items)
    {
        CheckBox Chk_wc_test = (CheckBox) itemtest.FindControl("Remove_wc");
           try 
    {
      if (Chk_wc_test.Checked == true) //此行选定了删除,则需要修改数据库
      {
         Label1.Text = remove.Text;
                  DoSomething();
       }
    else
      Label1.Text="你没有选定任何要删除的书";
    }
    catch(Exception ex) 
    {
    MyError.Text = ex.Message;
    } }
      

  13.   


    if (remove.Checked != true) //这行改成!= 之后可以DoSomething();也就是说remove根本就没有被选定,我选定的根本不认。