简体   繁体   English

GridView循环问题中动态创建的文本框值

[英]Dynamically created textbox value in gridview looping issue

In the below code i have created dynamic textbox in grid and i am saving the values in database .In my case there is only two rows created in gridview but in database it is saving 4 rows.Pls help me to solve the issue. 在下面的代码中,我在grid中创建了动态文本框,并将值保存在数据库中。在我的情况下,仅在gridview中创建了两行,但是在数据库中它保存了4行。请帮我解决问题。

 TestSchool.SchoolBusinessLyr.SchoolBizClient Grade = new TestSchool.SchoolBusinessLyr.SchoolBizClient();
            System.Collections.Generic.Dictionary<string, string> AssignGrade = new System.Collections.Generic.Dictionary<string, string>();
            foreach (GridViewRow row in gdassignmark.Rows)
{

            int rowIndex = 0;
            for (int i = 0; i < gdassignmark.Rows.Count; i++)
            {
                //extract the TextBox values
                TextBox Sa = (TextBox)gdassignmark.Rows[i].Cells[i].FindControl("txtsa");
                TextBox fa = (TextBox)gdassignmark.Rows[i].Cells[i].FindControl("txtfa");


                // var SubjectID = gdassignmark.DataKeys[rowIndex]["SubjectID"] as string;

                String cellText = row.Cells[0].Text;
                String cellText1 = row.Cells[2].Text;
                if (cellText != string.Empty)
                {

                    if (fa.Text == "0")
                    {
                        int faval = int.Parse(fa.Text);
                        int mark = (faval / 40) * 100;
                        string strmark = mark.ToString();
                        AssignGrade.Add("BranchID", dpbranch.SelectedValue);
                        AssignGrade.Add("Academicyear", dpacademicyear.SelectedValue);
                        AssignGrade.Add("ExamID", dpExamName.SelectedValue);
                        AssignGrade.Add("ClassID", dpClassName.SelectedValue);
                        AssignGrade.Add("SectionID", "1");
                        AssignGrade.Add("SubjectID", cellText.ToString());
                        AssignGrade.Add("StudentID", dpStudentName.SelectedValue);
                        AssignGrade.Add("FA", Sa.Text);
                        AssignGrade.Add("SA", "");
                        AssignGrade.Add("FAandSA", (strmark));
                        Grade.InsertStudentGrade(AssignGrade);
                    }}

You are looping through the Rows twice. 您正在两次浏览行。 Assuming that Rows[i]Cells[i] is correct you can change your code to not loop through all rows for each row: 假设Rows [i] Cells [i]是正确的,则可以更改代码以不遍历每一行的所有行:

 //foreach (GridViewRow row in gdassignmark.Rows)
 //{
        int rowIndex = 0;
        for (int i = 0; i < gdassignmark.Rows.Count; i++)
        {
            GridViewRow row = gdassignmark.Rows[i]

            //Do your stuff here

        }
  //}

You are looping over your gridview twice 您两次遍历了GridView

Remove outer foreach so your code should look like this 删除外部foreach,因此您的代码应如下所示

TestSchool.SchoolBusinessLyr.SchoolBizClient Grade 
       = new TestSchool.SchoolBusinessLyr.SchoolBizClient();
 System.Collections.Generic.Dictionary<string, string> AssignGrade 
       = new System.Collections.Generic.Dictionary<string, string>();


        for (int i = 0; i < gdassignmark.Rows.Count; i++)
        {
            //extract the TextBox values
            TextBox Sa = (TextBox)gdassignmark.Rows[i].Cells[i].FindControl("txtsa");
            TextBox fa = (TextBox)gdassignmark.Rows[i].Cells[i].FindControl("txtfa");


            // var SubjectID = gdassignmark.DataKeys[rowIndex]["SubjectID"] as string;

            String cellText = row.Cells[0].Text;
            String cellText1 = row.Cells[2].Text;
            if (cellText != string.Empty)
            {

                if (fa.Text == "0")
                {
                    int faval = int.Parse(fa.Text);
                    int mark = (faval / 40) * 100;
                    string strmark = mark.ToString();
                    AssignGrade.Add("BranchID", dpbranch.SelectedValue);
                    AssignGrade.Add("Academicyear", dpacademicyear.SelectedValue);
                    AssignGrade.Add("ExamID", dpExamName.SelectedValue);
                    AssignGrade.Add("ClassID", dpClassName.SelectedValue);
                    AssignGrade.Add("SectionID", "1");
                    AssignGrade.Add("SubjectID", cellText.ToString());
                    AssignGrade.Add("StudentID", dpStudentName.SelectedValue);
                    AssignGrade.Add("FA", Sa.Text);
                    AssignGrade.Add("SA", "");
                    AssignGrade.Add("FAandSA", (strmark));
                    Grade.InsertStudentGrade(AssignGrade);
                }
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM