当前位置:  开发笔记 > 后端 > 正文

如何将变量传递给SqlDataSource的SelectCommand?

如何解决《如何将变量传递给SqlDataSource的SelectCommand?》经验,为你挑选了4个好方法。



1> Phaedrus..:

你总是可以在后面的代码中这样做:


编辑

试试这个,删除SelectCommand属性和SelectParameters:

SqlDataSource1.SelectParameters.Add("userId", userId.ToString());

SqlDataSource1.SelectCommand = "SELECT items.name, items.id FROM items INNER JOIN users_items ON items.id = users_items.id WHERE (users_items.user_id = @userId) ORDER BY users_items.date DESC"

然后在后面的代码中执行此操作:




SqlDataSource1.SelectParameters.Add("userid", DbType.Guid, userId.ToString());

这对我有用,这也有效:




2> Al W..:

我们必须经常这样做,所以我做了我所谓的DelegateParameter类

using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using System.Reflection;

namespace MyControls
{
    public delegate object EvaluateParameterEventHandler(object sender, EventArgs e);

    public class DelegateParameter : Parameter
    {
        private System.Web.UI.Control _parent;
        public System.Web.UI.Control Parent
        {
            get { return _parent; }
            set { _parent = value; }
        }

        private event EvaluateParameterEventHandler _evaluateParameter;
        public event EvaluateParameterEventHandler EvaluateParameter
        {
            add { _evaluateParameter += value; }
            remove { _evaluateParameter -= value; }
        }

        protected override object Evaluate(System.Web.HttpContext context, System.Web.UI.Control control)
        {
            return _evaluateParameter(this, EventArgs.Empty);
        }
    }
}

将此类放在app_code中(如果将其放在那里,则删除命名空间)或在自定义控件程序集中.在web.config中注册控件后,您应该能够执行此操作


    
    
    

然后在你背后的代码中实现你喜欢的GetUserID.

protected object GetUserID(object sender, EventArgs e)
{
  return userId;
}



3> 小智..:

只需在页面中添加一个自定义属性即可返回您选择的变量.然后,您可以使用内置的"control"参数类型.

在后面的代码中,添加:

Dim MyVariable as Long


ReadOnly Property MyCustomProperty As Long
    Get
        Return MyVariable
    End Get
End Property

在select parameters部分中添加:




4> Glennular..:

附加到GUID:

 SqlDataSource1.SelectParameters.Add("userId",  System.Data.DbType.Guid, userID);

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有