ошибка при выборе значения из DDL - PullRequest
0 голосов
/ 07 апреля 2011

У меня было datalist, у меня было ddl, и пользователь может выбрать значение из ddl для привязки datalist.Когда я пытался найти ddl в datalist, когда пользователь выбирал значение, эта ошибка появлялась

Индекс был вне диапазона.Должен быть неотрицательным и меньшим, чем размер коллекции.Имя параметра: index

здесь

DDLProduct2 = (DropDownList)DLProduct.Items[DLProduct.EditItemIndex].FindControl("DDlProduct");

, поэтому, пожалуйста, помогите мне.

private DropDownList DDLProduct2;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ProductByProductID();
            CategoryParentZero();


        }
    }
 protected void DDlProduct_SelectedIndexChanged(object sender, EventArgs e)
    {
        DDLProduct2 = (DropDownList)DLProduct.Items[DLProduct.EditItemIndex].FindControl("DDlProduct");
        if (DDLProduct2 != null)
        {
            if (DDLProduct2.SelectedIndex > 0)
            {
                using
                (SqlConnection conn = Connection.GetConnection())
                {
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = "SP_GetProductsByProductID";
                    SqlParameter ParentID_Param = cmd.Parameters.Add("@ProductID", SqlDbType.Int);
                    ParentID_Param.Value = DDLProduct2.SelectedValue;
                    ;
                    DataTable dt = new DataTable();
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = cmd;
                    da.Fill(dt);
                    DLProduct.DataSource = dt;
                    DLProduct.DataBind();

                }
            }
        }

    } 

1 Ответ

0 голосов
/ 07 апреля 2011

DLProduct.EditItemIndex должен быть равен -1, потому что ничего не редактируется

просто добавьте if DLProduct.EditItemIndex >= 0 перед строкой, выдавшей ошибку

...