Как я могу установить значение параметра sqldatasource? - PullRequest
7 голосов
/ 12 июня 2009

Я пытаюсь установить значение параметра sqldatasource selectcommand @ClientID, как показано в коде ниже, но это не работает.

Мой код:

Dim strCommand = "SELECT caller_id, phone, name, email FROM callers WHERE client_id=@ClientID"

SqlDataSource2.SelectCommand = strCommand

SqlDataSource2.SelectParameters.Add("@ClientID", iClientID) 

Что я делаю не так?

Ответы [ 8 ]

8 голосов
/ 11 октября 2009

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

' NOTE that there is no "@" sign when you use your parameters in the code
Parameter p = strCommandSqlDataSource2.SelectParameters["ClientID"]
strCommandSqlDataSource2.SelectParameters.Remove(p)
strCommandSqlDataSource2.SelectParameters.Add("ClientID", iClientID)

Не следует использовать знак «@» при именовании параметров в кодовой части его использования. Вы должны использовать его только в строке SQLCOMMAND.

Надеюсь, это поможет.

3 голосов
/ 12 июня 2009

Вы можете установить значение вашего параметра следующим образом:

SqlParameter parameter1 = new SqlParameter("@ClientID", SqlDbType.BigInt);
parameter1.Value = 32;
SqlDataSource2.SelectParameters.Add(parameter1);
2 голосов
/ 13 июня 2009

Не бери в голову ... настроил параметр источника данных, чтобы он принимал значение другого элемента управления ..

1 голос
/ 16 мая 2015

У меня есть решение для переменной от GET до параметра для SelectCommand

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
   Dim p As Parameter = SQLDataSource.SelectParameters("Order_id")
   If IsNothing(p) Then
        SQLDataSource.SelectParameters.Add("Order_id", Server.HtmlEncode(Request.QueryString("Order_id")).ToString())
   End If
End Sub
1 голос
/ 20 июля 2014

Если вы использовали редактор WYSWIG для создания своего источника данных и хотите программно обновить параметры SQL, вам нужно сделать следующее:

Dim strCommand = "SELECT caller_id, phone, name, email FROM callers WHERE client_id=@ClientID"

SqlDataSource2.SelectCommand = strCommand

**SqlDataSource2.SelectParameters.Clear();**

SqlDataSource2.SelectParameters.Add("@ClientID", iClientID)
0 голосов
/ 20 ноября 2015
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        SqlDataSource SqlDataSource1 = new SqlDataSource();
        SqlDataSource1.ID = "SqlDataSource1";
        this.Page.Controls.Add(SqlDataSource1);
        SqlDataSource1.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConID"].ConnectionString;
        SqlDataSource1.SelectCommand = "SELECT caller_id, phone, name, email FROM callers WHERE client_id=@ClientID";
        SqlDataSource1.SelectParameters.Add("ClientID",ClientID);
        GridView1.DataSource = SqlDataSource1;
        GridView1.DataBind();
    }
}
0 голосов
/ 20 августа 2010

Вот версия VB:

Dim parameter As New System.Web.UI.WebControls.Parameter("ClientID", Data.DbType.Int32)
parameter.DefaultValue = 45
sqlTicketInfo.SelectParameters.Add(parameter)

В версии VB.NET не было способа фактически установить значение, поэтому вместо него я установил значение по умолчанию. Значение по умолчанию используется, если значение не инициализировано, поэтому, поскольку мы не можем установить значение, оно все равно будет автоматически использовать значение по умолчанию.

0 голосов
/ 13 июня 2009

Вы можете обойти это, выбрав событие Selecting в SqlDataSource, теперь я понимаю, как можно ограничить сбои в таких элементах управления !!!

Другой альтернативой может быть добавление HiddenField к вашей форме, и SqlDataSource может получить свое значение оттуда.

...