本帖最后由 guolei0304 于 2011-05-07 17:10:33 编辑

解决方案 »

  1.   

    这样实现:
       Int32 irow = 3;//行数
                Int32 icount = 6;//每行数据个数
                string str = string.Empty;
                int iss = 0;            for (int i = 1; i <= irow; i++)
                {
                    for (int j = 1; j <= icount; j++)
                    {
                        if (i % 2 != 0)
                        {
                            iss = (i*icount +1-j);
                            str += iss.ToString() + " " ;                       
                        }
                        else
                        {
                            iss = ((i - 1) * icount + j);
                            str += iss.ToString() + " ";
                           // System.Console.WriteLine(str);
                            //str = string.Empty;
                        }
                    }
                    System.Console.WriteLine(str);
                    str = string.Empty;
                    iss = 0;
                }
      

  2.   


    public IList<ExamRoom> FindStudentByRoom(string courseCode, long pointId, long roomId, bool photoMore, bool codePhotoMore)
            {
                IList<vPointRoomStudent> list = studentClient.findStudentByCourseAndPointAndRoom(user.SessionID, courseCode, pointId, roomId);
                if (list == null || list.Count < 1)
                    return null;            int count = list.Count;
                ExamRoom r = new ExamRoom();
                RoomStudentItem item = new RoomStudentItem();
                IList<ExamRoom> rs = new List<ExamRoom>();
                int itemIndex = 1;
                for (int i = 0; i < count; i++)
                {
                    vPointRoomStudent rp = list[i];
                    if (i == 0)
                    {
                        r = new ExamRoom();
                        r.PointName = rp.pointName;
                        r.CourseName = rp.courseName;
                        r.RoomNO = rp.roomNumber.ToString().PadLeft(3,'0');                    r.StudentItems = new List<RoomStudentItem>();
                        item = new RoomStudentItem();
                        item.ItemId = itemIndex++;
                        item.Students = new List<Student>();
                    }                Student s = new Student();
                    s.StudentName = rp.studentName;
                    s.CardCode = rp.cardCode;
                    s.RoomNO = rp.roomNumber.ToString().PadLeft(3,'0');                if (photoMore)
                    {
                        DownloadPhoto(rp.studentId, rp.code);
                        s.PhotoPath = SetPhotoPath() + rp.code + ".jpg";
                    }
                    if (codePhotoMore)
                    {
                        s.CodePhotoPath = DownloadCodePhoto(rp.cardCode, true);
                    }                item.Students.Add(s);                if ((i + 1) % 6 == 0 || (i + 1) == count)
                    {
                        r.StudentItems.Add(item);
                        if ((i + 1) != count)
                        {
                            item = new RoomStudentItem();
                            item.ItemId = itemIndex++;
                            item.Students = new List<Student>();
                        }
                    }                if ((i + 1) == count)
                    {
                        rs.Add(r);                    r = new ExamRoom();
                        r.PointName = rp.pointName;
                        r.CourseName = rp.courseName;
                        r.RoomNO = rp.roomNumber.ToString().PadLeft(3,'0');                    r.StudentItems = new List<RoomStudentItem>();
                        item = new RoomStudentItem();
                        item.ItemId = itemIndex++;
                        item.Students = new List<Student>();
                    }
                }
                return rs;
            }
      

  3.   


     private void OnSubreportProcessing(object sender, SubreportProcessingEventArgs e)
            {
                ReportParameterInfo pi = e.Parameters["RoomNO"];
                ExamRoom r = GetItemByNO(pi.Values[0]);
                if (r == null)
                    return;
                if (e.Parameters["Index"] == null)
                {
                    e.DataSources.Add(new ReportDataSource("RoomStudentItem", r.StudentItems));
                    return;
                }            pi = e.Parameters["Index"];
                int index = Convert.ToInt32(pi.Values[0]);
                int itemIndex = Convert.ToInt32(e.Parameters["ItemIndex"].Values[0]) - 1;
                Student s = GetStudentByIndex(r, itemIndex, index);
                if (s == null)
                {
                    e.DataSources.Add(new ReportDataSource("Student", new Student[] { }));
                    return;
                }
                e.DataSources.Add(new ReportDataSource("Student", new Student[1] { s }));
            }        private Student GetStudentByIndex(ExamRoom r, int itemIndex, int index)
            {
                if (r.StudentItems.Count < (itemIndex + 1))
                    return null;            RoomStudentItem item = r.StudentItems[itemIndex];
                if (item == null || item.Students == null || item.Students.Count < (index + 1))
                    return null;            return item.Students[index];
            }        private ExamRoom GetItemByNO(string p)
            {
                foreach (ExamRoom i in list)
                {
                    if (i.RoomNO == p)
                        return i;
                }
                return null;
            }