Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Gridvew循环多次,即使在asp.net中选择的记录最少_C#_Asp.net_If Statement_Gridview_Foreach - Fatal编程技术网

C# Gridvew循环多次,即使在asp.net中选择的记录最少

C# Gridvew循环多次,即使在asp.net中选择的记录最少,c#,asp.net,if-statement,gridview,foreach,C#,Asp.net,If Statement,Gridview,Foreach,我有一个gridview,其中每一行都包含一个复选框供选择。该选择将用于批准或拒绝目的 但这里的问题是,如果我从gridview中选择2行,它至少会循环4-5次,并给我同一行的多封电子邮件 下面是我的代码。请建议 protected void btnApproveCMM_Click(object sender, EventArgs e) { string strDate = ""; string strMailContent = ""; D

我有一个
gridview
,其中每一行都包含一个
复选框
供选择。该选择将用于
批准
拒绝
目的

但这里的问题是,如果我从
gridview
中选择
2
行,它至少会循环4-5次,并给我同一行的多封电子邮件

下面是我的代码。请建议

protected void btnApproveCMM_Click(object sender, EventArgs e)
    {
        string strDate = "";
        string strMailContent = "";
        DataTable dtApprove = new DataTable();
        CommonDB ObjDB = new CommonDB();

        try
        {
            bool flgCMM = false;
            IPColoFields ObjIPColoFields = new App_Code.IPColoFields();
            List<IPColoBilling_BKP.App_Code.UMS.UMSGroupDetails> UMSGroupDetails = (List<IPColoBilling_BKP.App_Code.UMS.UMSGroupDetails>)Session["lstUMSGroupDetails"];

            Session["lstUMSGroupDetails"] = UMSGroupDetails;
            string strApprove = "";

            if (ViewState["CheckedCheckboxes_CMM"] != null)
            {

                foreach (GridViewRow row in grdDisplayCMMData.Rows)
                {
                    if (((CheckBox)row.FindControl("chkApprRejCMM")).Checked)
                    {
                        Label SAPID_CMM = (Label)row.FindControl("lblSAP_ID_CMM");
                        Label ID = (Label)row.FindControl("lblID_CMM");
                        int Id = Convert.ToInt32(ID.Text);

                        ObjIPColoFields.Unique_Id = Id;
                        ObjIPColoFields.UMS_GRP_BY_ID = intCurrentGrpId;
                        ObjIPColoFields.UMS_GRP_BY_NAME = strCurrentGrp;
                        ObjIPColoFields.UMS_GRP_TO_ID = UMSGroupDetails[1].GroupID;
                        ObjIPColoFields.UMS_GRP_TO_NAME = UMSGroupDetails[1].GroupName;
                        ObjIPColoFields.FCA_STATUS = "1";
                        ObjIPColoFields.LAST_UPDATED_BY = lblUserName.Text;
                        strDate = DateTime.Now.ToString();

                        strApprove = CommonDB.Approve_IPCOLO_CMMLevel(ObjIPColoFields);

                        if (ObjIPColoFields.Unique_Id != null || ObjIPColoFields.Unique_Id != 0)
                        {
                            strMailContent = Get_Email_Content(ObjIPColoFields.LAST_UPDATED_BY, SAPID_CMM.Text, strIPCOLO_CMM, Convert.ToString(Id), strDate, "Approved");
                            SendEmail(lblUserName.Text, strMailContent, strIPCOLO_CMM);
                        }
                    }
                }
            }

            BindCMMData();

            if (flgCMM == false)
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Please check atleast one row'); window.location ='IpColoDefault.aspx';", true);
            }
            else
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Record Approved successfully'); window.location ='IpColoDefault.aspx';", true);
            }
        }
        catch (Exception ex)
        {
            string strErrorMsg = ex.Message.ToString() + " " + "StackTrace :" + ex.StackTrace.ToString();
            CommonDB.WriteLog("ERROR:" + strErrorMsg, ConfigurationManager.AppSettings["IPCOLO_LOG"].ToString());
        }
    }
protected void btnApproveCMM\u单击(对象发送方,事件参数)
{
字符串strDate=“”;
字符串strMailContent=“”;
DataTable dtApprove=新DataTable();
CommonDB ObjDB=新的CommonDB();
尝试
{
布尔flgCMM=假;
IPColoFields ObjIPColoFields=新的应用程序代码.IPColoFields();
列表UMSGroupDetails=(列表)会话[“lstUMSGroupDetails”];
会话[“lstUMSGroupDetails”]=UMSGroupDetails;
字符串Straprove=“”;
如果(ViewState[“CheckedCheckBox\u CMM”]!=null)
{
foreach(grddisplaycmdata.Rows中的GridViewRow行)
{
if(((复选框)row.FindControl(“chkApprRejCMM”)).Checked)
{
Label SAPID_CMM=(Label)row.FindControl(“lblSAP_ID_CMM”);
Label ID=(Label)row.FindControl(“lblID_CMM”);
int Id=Convert.ToInt32(Id.Text);
ObjIPColoFields.Unique_Id=Id;
ObjIPColoFields.UMS_GRP_BY_ID=intCurrentGrpId;
ObjIPColoFields.UMS_GRP_BY_NAME=strCurrentGrp;
ObjIPColoFields.UMS_GRP_TO_ID=UMSGroupDetails[1].GroupID;
ObjIPColoFields.UMS_GRP_TO_NAME=UMSGroupDetails[1];
ObjIPColoFields.FCA_STATUS=“1”;
ObjIPColoFields.LAST_UPDATED_BY=lblUserName.Text;
strDate=DateTime.Now.ToString();
Straprove=CommonDB.Approve\u IPCOLO\u CMMLevel(对象颜色字段);
if(ObjIPColoFields.Unique_Id!=null | | ObjIPColoFields.Unique_Id!=0)
{
strMailContent=Get_Email_Content(ObjIPColoFields.LAST_UPDATED_BY,SAPID_CMM.Text,strIPCOLO_CMM,Convert.ToString(Id),strDate,“已批准”);
SendEmail(lblUserName.Text、标准内容、strIPCOLO_CMM);
}
}
}
}
bindcmdata();
如果(flgCMM==false)
{
ScriptManager.RegisterStartupScript(this,this.GetType(),“alert”,“alert('请至少检查一行”);window.location='IpColoDefault.aspx';“,true);
}
其他的
{
ScriptManager.RegisterStartupScript(this,this.GetType(),“警报”,“警报('Record Approved successfully');window.location='IpColoDefault.aspx';”,true);
}
}
捕获(例外情况除外)
{
字符串strErrorMsg=ex.Message.ToString()+“”+”StackTrace:“+ex.StackTrace.ToString();
CommonDB.WriteLog(“错误:+strErrorMsg,ConfigurationManager.AppSettings[“IPCOLO_LOG”].ToString());
}
}

使用此代码

foreach (GridViewRow row in grdDisplayCMMData.Rows)
{
      if (((Checkbox)row.FindControl("chkApprRejCMM")).Checked)
      {
      Label SAPID_CMM = (Label)row.FindControl("lblSAP_ID_CMM");

      ObjIPColoFields.Unique_Id = Id;
      ObjIPColoFields.UMS_GRP_BY_ID = intCurrentGrpId;
      ObjIPColoFields.UMS_GRP_BY_NAME = strCurrentGrp;
      ObjIPColoFields.UMS_GRP_TO_ID = UMSGroupDetails[1].GroupID;
      ObjIPColoFields.UMS_GRP_TO_NAME = UMSGroupDetails[1].GroupName;
      ObjIPColoFields.FCA_STATUS = "1";
      ObjIPColoFields.LAST_UPDATED_BY = lblUserName.Text;
      strDate = DateTime.Now.ToString();                                                    

      strApprove = CommonDB.Approve_IPCOLO_CMMLevel(ObjIPColoFields);

      if (ObjIPColoFields.Unique_Id != null || ObjIPColoFields.Unique_Id != 0)
      {
            strMailContent = Get_Email_Content(ObjIPColoFields.LAST_UPDATED_BY, SAPID_CMM.Text, strIPCOLO_CMM, Convert.ToString(Id), strDate, "Approved");
            SendEmail(lblUserName.Text, strMailContent, strIPCOLO_CMM);
      }
      }
 }

很难说这是怎么回事。看起来您以某种方式用选中复选框的值预先填充了
ViewState[“CheckedCheckboxes\u CMM”]
。然后在上面循环,在里面,在网格中的所有行上循环。我将删除外部循环,只在gridview行上循环,使用
Findcontrol
获取行上的复选框,然后根据是否选中该复选框来决定下一步要做什么。此外,这个if:
if(ObjIPColoFields.Unique_Id!=null | | ObjIPColoFields.Unique_Id!=0)
是没有意义的。属性不能同时为null和0,因此if的主体将始终运行。@user1429080:我是否应该删除外部循环并检查是否得到预期结果?在何种情况下,您将列表分配到ViewState[“CheckedCheckBox\u CMM”]?您必须调试该事件。@AamirNakhwa:我正在加载
页面上分配它
如果(!IsPostBack){ViewState[“CheckedCheckboxes_CMM”]=new List();}
@user1429080:我删除了外部循环,现在我得到了预期的结果,可能是因为我从中获得了
id
,所以我使用了额外的循环。但现在不需要了。我会再次检查一遍,我只是复制了你的代码,并将复选框置于选中状态。现在该行被移除了,我现在被卡在验证部分,它位于If condition
bindcmdata()外部;如果(flgCMM==false){ScriptManager.RegisterStartupScript(this,this.GetType(),“alert”,“alert('请至少检查一行');window.location='IpColoDefault.aspx';”,true);}else{ScriptManager.RegisterStartupScript(this,this.GetType(),“警报”、“警报(‘记录已成功批准’);window.location='IpColoDefault.aspx';”,true);}
您可以将此脚本放在页面上。无需为此验证进行回发。您的项目中是否有jQuery?我已更新了所有有问题的代码。请注意,即使我检查了一行,我也会收到警报
请至少检查一行