Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Lỗi Index (zero based) must be greater than or equal to zero and less than the size of the argument list ?

    Em đang tập viết module cho DotNetNuke.
    Em viết cái module Menu bên trái, có vấn đề xảy ra khi em build module. Nó hiện thông báo lỗi như sau ạ .
    Có lỗi nghiêm trọng xảy ra.
    Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
    .
    Đoạn code của em đây.
    Mã:
    private string DisplayMenu()
            {
                //Get Data from Database
                string sConnectionString = ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString;
                SqlConnection objCon = new SqlConnection(sConnectionString);
                string strSql ="SELECT  CateID,CateName,PaID  FROM Dynamic ";
                SqlCommand objCommand = new SqlCommand(strSql, objCon);
                objCon.Open();
                SqlDataReader dataReader = objCommand.ExecuteReader();
    
                dtPage.Load(dataReader);
                objCon.Close();
    
                //Display root menu (with parentid=0)
                sbMenu.Append("<ul            for (int i = 0; i < dtPage.Rows.Count; i++)
                {
                    if (dtPage.Rows[i]["paID"].ToString() == "0")
                    {
                        sbMenu.AppendFormat("<li> <a href=\"{0}\">{1}</a>", dtPage.Rows[i]["CateName"]);
                        RecursiveMenu((Int32)dtPage.Rows[i]["CateID"]);
                    }
                }
    
                sbMenu.Append("</ul>");
    
                return sbMenu.ToString();
            }
    
            private void RecursiveMenu(Int32 paID)
            {
                List<DataRow> lstChilds = new List<DataRow>();
                for (Int32 i = 0; i < dtPage.Rows.Count; i++)
                {
                    if ((Int32)dtPage.Rows[i]["paID"] == paID)
                    {
                        lstChilds.Add(dtPage.Rows[i]);
                    }
                }
    
                if (lstChilds.Count() > 0)
                {
                    sbMenu.Append("<ul>");
                    foreach (var row in lstChilds)
                    {
                        sbMenu.AppendFormat("<li><a href=\"{0}\">{1}</a>", row["CateName"]);
                        RecursiveMenu((Int32)row["CateID"]);
                    }
                    sbMenu.Append("</ul>");
                }
                else
                {
                    sbMenu.Append("</li>");
                }
            }
    Bác nào xem rồi giúp em với. em xin chân thành cảm ơn.[IMG]images/smilies/smile.png[/IMG]

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi garungns
    Em đang tập viết module cho DotNetNuke.
    Em viết cái module Menu bên trái, có vấn đề xảy ra khi em build module. Nó hiện thông báo lỗi như sau ạ .
    Có lỗi nghiêm trọng xảy ra.
    Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
    .
    Đoạn code của em đây.
    Mã:
    private string DisplayMenu()
            {
                //Get Data from Database
                string sConnectionString = ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString;
                SqlConnection objCon = new SqlConnection(sConnectionString);
                string strSql ="SELECT  CateID,CateName,PaID  FROM Dynamic ";
                SqlCommand objCommand = new SqlCommand(strSql, objCon);
                objCon.Open();
                SqlDataReader dataReader = objCommand.ExecuteReader();
    
                dtPage.Load(dataReader);
                objCon.Close();
    
                //Display root menu (with parentid=0)
                sbMenu.Append("<ul class=\"sf-menu\">");
                for (int i = 0; i < dtPage.Rows.Count; i++)
                {
                    if (dtPage.Rows[i]["paID"].ToString() == "0")
                    {
                        sbMenu.AppendFormat("<li> <a href=\"{0}\">{1}</a>", dtPage.Rows[i]["CateName"]);
                        RecursiveMenu((Int32)dtPage.Rows[i]["CateID"]);
                    }
                }
    
                sbMenu.Append("</ul>");
    
                return sbMenu.ToString();
            }
    
            private void RecursiveMenu(Int32 paID)
            {
                List<DataRow> lstChilds = new List<DataRow>();
                for (Int32 i = 0; i < dtPage.Rows.Count; i++)
                {
                    if ((Int32)dtPage.Rows[i]["paID"] == paID)
                    {
                        lstChilds.Add(dtPage.Rows[i]);
                    }
                }
    
                if (lstChilds.Count() > 0)
                {
                    sbMenu.Append("<ul>");
                    foreach (var row in lstChilds)
                    {
                        sbMenu.AppendFormat("<li><a href=\"{0}\">{1}</a>", row["CateName"]);
                        RecursiveMenu((Int32)row["CateID"]);
                    }
                    sbMenu.Append("</ul>");
                }
                else
                {
                    sbMenu.Append("</li>");
                }
            }
    Bác nào xem rồi giúp em với. em xin chân thành cảm ơn.[IMG]images/smilies/smile.png[/IMG]
    Cái nì thì dễ ợt. Bạn cứ debug program từng dòng. Khi nào nó báo lỗi thì xem cái biến nào bị lỗi. Từ đó khắc phục. Bạn nên tập dùng nhiều debug, từ từ sẽ ít bị lỗi thế này.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •