我可以在1个按钮中循环浏览2个数据网格视图单击事件并执行更新吗?

时间:2012-02-29 18:50:38

标签: asp.net datagridview foreach

我有一个拥有客户和推销员的人员表。通过ParentID将每个客户分配给销售员。即,客户父母ID是Salesmans的个人ID。 IndividualID是主键。我写了一个存储的Proc,它接受IndividualID和ParentID。 我需要遍历2个数据网格,它们都有复选框,然后将选定的客户分配给选定的销售人员。 (基本上说,选定的客户新的ParentID被选中Salesman的IndividualID) Anywya,我试图在1个按钮点击事件中循环浏览2个数据网格并获取ParentID和IndividualID。但是我在第二个foreach循环中的变量下得到了波浪线。这是我的代码:

protected void imgbtnReassgin_Click(object sender, ImageClickEventArgs e)
{
    //loop 1st gv

    foreach (GridViewRow row in gvCustomer.Rows)
    {
        CheckBox cb = (CheckBox)row.FindControl("chkitemSelectorCustomers");
        if (cb != null && cb.Checked)
        {
            GridViewRow r = gvCustomer.SelectedRow;
            int oldParentID = Convert.ToInt32(r.Cells[2]);
            int oIndividualID = Convert.ToInt32(r.Cells[0]);
        }
    }     // loop 2nd gv
    foreach (GridViewRow row in gvSalesman.Rows )
    {
        CheckBox chkBox =        (CheckBox)row.FindControl("chkitemSelectorAllManagersandSalesman");
        if (chkBox != null && chkBox.Checked)
        {
            GridViewRow ro = gvReassignCustomers.SelectedRow;
            int oNewParentID = Convert.ToInt32(ro.Cells[1]);

            // Assign old ParentID to Salesmans ID//
            oNewParentID = oldParentID;

            // Call stored proc Update Customer with New ParentID//

            Individual ind = new Individual();
            ind.ReassignIndividual(oIndividualID, oNewParentID);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

oldParentIDoIndividualID变量在第一个foreach中声明,在第二个foreach中访问,这是不允许的,因为它们的范围在第一个foreach中。

尝试在foreach循环之外声明它们。代码将编译,但我不确定它是否会解决您的更新。

答案 1 :(得分:1)

如果您有嵌套循环,则它们在第二个嵌套循环GridViewRow row中使用相同的变量名称,它们不能具有相同的变量名。