8

我正在尝试按照下面的代码设置sqldatasource'sselectcommand参数的值@ClientID,但它没有成功。

我的代码:

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

SqlDataSource2.SelectCommand = strCommand

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

我究竟做错了什么?

4

8 回答 8

8

使其工作的技巧是在添加之前删除您尝试使用的参数。您的代码的以下改编版本应该可以工作:

' 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 字符串中使用它。

希望能帮助到你。

于 2009-10-10T20:06:29.237 回答
3

您可以像这样设置参数的值:

SqlParameter parameter1 = new SqlParameter("@ClientID", SqlDbType.BigInt);
parameter1.Value = 32;
SqlDataSource2.SelectParameters.Add(parameter1);
于 2009-06-12T19:36:15.617 回答
2

没关系...配置数据源的参数以获取另一个控件的值..

于 2009-06-12T21:17:29.213 回答
1

如果您使用 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)
于 2014-07-19T23:14:49.687 回答
1

我有从 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
于 2015-05-16T20:44:29.573 回答
1
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();
    }
}
于 2015-11-20T11:00:41.003 回答
0

您可以通过 SqlDataSource 上的 Selecting 事件来解决它,我现在在这种控件中是多么令人沮丧!

另一种选择是在表单中添加一个 HiddenField,SqlDataSource 可以从那里获取它的值。

于 2009-06-12T21:21:58.110 回答
0

这是VB版本:

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

在 VB.NET 版本中,无法实际设置该值,因此我设置了默认值。如果该值未初始化,则使用默认值,因此由于我们无法设置该值,因此无论如何它都会自动使用默认值。

于 2010-08-20T16:06:41.953 回答