Asp.net 从gridview获取多行数据键
目前,我有一个按钮点击事件,它从Datagrid中的一行获取DataKey(通过复选框),并将其分配给一个INT变量,以更新DataSSE中的一个个体。当我只选中1个复选框并运行更新时,一切正常。但是,我需要用户有选择所有复选框的选项,并采取所有这些数据键,并将其分配给同一个变量Asp.net 从gridview获取多行数据键,asp.net,datagridview,foreach,datakey,Asp.net,Datagridview,Foreach,Datakey,目前,我有一个按钮点击事件,它从Datagrid中的一行获取DataKey(通过复选框),并将其分配给一个INT变量,以更新DataSSE中的一个个体。当我只选中1个复选框并运行更新时,一切正常。但是,我需要用户有选择所有复选框的选项,并采取所有这些数据键,并将其分配给同一个变量 INT oNewParentID 就像我说的,当只选中1个复选框时,evrything工作正常。我想我是在问如何获得Uknown数量的Datakeys或所有复选框选择的所有Datakeys,并将它们存储在上面的变量中
INT oNewParentID
就像我说的,当只选中1个复选框时,evrything工作正常。我想我是在问如何获得Uknown数量的Datakeys或所有复选框选择的所有Datakeys,并将它们存储在上面的变量中,以便为所有选择的个人运行更新。这是迄今为止我的按钮单击事件,它适用于选中的1个复选框:
protected void imgbtnReassgin_Click(object sender, ImageClickEventArgs e)
{
foreach (GridViewRow row in gvSalesmanCustomers.Rows)
{
CheckBox cb = (CheckBox)row.FindControl("chkSalesCustSelector");
if (cb != null && cb.Checked)
{
int oIndividualID = Convert.ToInt32((gvSalesmanCustomers.DataKeys[row.RowIndex].Value));
foreach (GridViewRow r in gvSalesmanByManager.Rows)
{
CheckBox chkBox = (CheckBox)r.FindControl("chkManagerSalesSelector");
if (chkBox != null && chkBox.Checked)
{
int oNewParentID = Convert.ToInt32((gvSalesmanByManager.DataKeys[r.RowIndex].Value));
Individual ind = new Individual();
ind.ReassignIndividual(oIndividualID, oNewParentID);
chkBox.Checked = false;
cb.Checked = false;
}
}
}
}
}
她是我的更新存储过程:
CREATE DEFINER=`root`@`%` PROCEDURE `reassign_Individual`(
IN oIndividualID int(11),
IN oNewParentID int(11)
)
BEGIN
Update intelliair.individual
set ParentID = oNewParentID
Where IndividualID = oIndividualID;END
重新组织代码。
在第二个foreach
中添加了中断,假设没有理由多次reasignenvirtual
将其分配给最后选择的经理
protected void imgbtnReassgin_Click(object sender, ImageClickEventArgs e)
{
List<int> ids = new List<int>();
foreach (GridViewRow row in gvSalesmanCustomers.Rows)
{
CheckBox cb = (CheckBox)row.FindControl("chkSalesCustSelector");
if (cb != null && cb.Checked)
{
int oIndividualID = Convert.ToInt32((gvSalesmanCustomers.DataKeys[row.RowIndex].Value));
ids.Add(oIndividualID);
cb.Checked = false;
}
}
int oNewParentID = 0;
foreach (GridViewRow r in gvSalesmanByManager.Rows)
{
CheckBox chkBox = (CheckBox)r.FindControl("chkManagerSalesSelector");
if (chkBox != null && chkBox.Checked)
{
oNewParentID = Convert.ToInt32((gvSalesmanByManager.DataKeys[r.RowIndex].Value));
chkBox.Checked = false;
break; //no reason to go with the same logic to next records
//if you want to uncheck all the checkboxes continue with specific code just for that purpose
}
}
if (ids.Count > 0 && oNewParentID > 0)
foreach(var id in ids)
{
Individual ind = new Individual();
ind.ReassignIndividual(id, oNewParentID);
}
}
protectedvoid imgbtnresagin\u单击(对象发送方,图像单击事件参数e)
{
列表ID=新列表();
foreach(gvSalesmanCustomers.Rows中的GridViewRow行)
{
复选框cb=(复选框)row.FindControl(“chkSalesCustSelector”);
如果(cb!=null&&cb.Checked)
{
int-oIndividualID=Convert.ToInt32((gvSalesmanCustomers.DataKeys[row.RowIndex].Value));
id.Add(oIndividualID);
cb.Checked=假;
}
}
int-oNewParentID=0;
foreach(gvSalesmanByManager.Rows中的GridViewRow r)
{
复选框chkBox=(复选框)r.FindControl(“chkmanagersalessector”);
if(chkBox!=null&&chkBox.Checked)
{
oNewParentID=Convert.ToInt32((gvSalesmanByManager.DataKeys[r.RowIndex].Value));
chkBox.Checked=false;
break;//没有理由对下一条记录使用相同的逻辑
//如果要取消选中所有复选框,请继续使用特定代码以实现此目的
}
}
如果(ids.Count>0&&oNewParentID>0)
foreach(id中的变量id)
{
个体ind=新个体();
ind.ReassignIndividual(id,oNewParentID);
}
}
重新组织代码。
在第二个foreach
中添加了中断,假设没有理由多次reasignenvirtual
将其分配给最后选择的经理
protected void imgbtnReassgin_Click(object sender, ImageClickEventArgs e)
{
List<int> ids = new List<int>();
foreach (GridViewRow row in gvSalesmanCustomers.Rows)
{
CheckBox cb = (CheckBox)row.FindControl("chkSalesCustSelector");
if (cb != null && cb.Checked)
{
int oIndividualID = Convert.ToInt32((gvSalesmanCustomers.DataKeys[row.RowIndex].Value));
ids.Add(oIndividualID);
cb.Checked = false;
}
}
int oNewParentID = 0;
foreach (GridViewRow r in gvSalesmanByManager.Rows)
{
CheckBox chkBox = (CheckBox)r.FindControl("chkManagerSalesSelector");
if (chkBox != null && chkBox.Checked)
{
oNewParentID = Convert.ToInt32((gvSalesmanByManager.DataKeys[r.RowIndex].Value));
chkBox.Checked = false;
break; //no reason to go with the same logic to next records
//if you want to uncheck all the checkboxes continue with specific code just for that purpose
}
}
if (ids.Count > 0 && oNewParentID > 0)
foreach(var id in ids)
{
Individual ind = new Individual();
ind.ReassignIndividual(id, oNewParentID);
}
}
protectedvoid imgbtnresagin\u单击(对象发送方,图像单击事件参数e)
{
列表ID=新列表();
foreach(gvSalesmanCustomers.Rows中的GridViewRow行)
{
复选框cb=(复选框)row.FindControl(“chkSalesCustSelector”);
如果(cb!=null&&cb.Checked)
{
int-oIndividualID=Convert.ToInt32((gvSalesmanCustomers.DataKeys[row.RowIndex].Value));
id.Add(oIndividualID);
cb.Checked=假;
}
}
int-oNewParentID=0;
foreach(gvSalesmanByManager.Rows中的GridViewRow r)
{
复选框chkBox=(复选框)r.FindControl(“chkmanagersalessector”);
if(chkBox!=null&&chkBox.Checked)
{
oNewParentID=Convert.ToInt32((gvSalesmanByManager.DataKeys[r.RowIndex].Value));
chkBox.Checked=false;
break;//没有理由对下一条记录使用相同的逻辑
//如果要取消选中所有复选框,请继续使用特定代码以实现此目的
}
}
如果(ids.Count>0&&oNewParentID>0)
foreach(id中的变量id)
{
个体ind=新个体();
ind.ReassignIndividual(id,oNewParentID);
}
}