Не удается получить SqlDataSource.SelectParameters. Добавить в работу

Я пытаюсь изменить параметр SqlDataSource на лету, но кажется, что код не работает, или, другими словами, я, кажется, не удается.

Вот код:

        int id = 0;

        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["RHOGEConnection"].ConnectionString);
        SqlCommand getId = new SqlCommand(null, conn);
        SqlParameter name = new SqlParameter("@name", SqlDbType.NVarChar);
        name.Value = SelectTeam.SelectedValue;
        getId.Parameters.Add(name);
        /* getId.CommandText = */ //changed to a select statement that gets a number

        try
        {
            conn.Open();
            id = (int)getId.ExecuteScalar();
            conn.Close();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

        SqlDataSource2.SelectParameters.Add(new Parameter("getId", TypeCode.Int16, Convert.ToString(id)));

Теперь я знаю, что код для получения числа, строки над SqlDataSource2, работает, потому что я напечатал его на экране, и они выглядят правильно. Я также пробовал команду выбора SqlDataSource2 в SQL Management Studio, и она дает правильные результаты. Поэтому я думаю, что при добавлении параметра в список параметров возникает проблема.

SELECT [TeamName] FROM [Teams] where PlayerIdent = (select playerId
                from Players where PlayerShirtId = @getId)

Выше приведена команда выбора, которая работает.

Согласны ли вы с тем, что параметр - это правильный диагноз, и если да, то что мне делать?

РЕДАКТИРОВАТЬ: я смог решить эту проблему следующим образом.

SqlDataSource2.SelectParameters["getId"].DefaultValue = Convert.ToString(id);

1 ответ

Возможно вместо

SqlParameter name = new SqlParameter("@name", SqlDbType.NVarChar);

так должно быть

Parameter name = new Parameter("@name", SqlDbType.NVarChar, Convert.ToString(id));
Другие вопросы по тегам