ahm*_*med 29 .net asp.net variables parameters sqldatasource
我想将变量从后面的代码传递给SqlDataSource的SelectCommand?
我不想使用内置参数类型(如ControlParemeter,QueryStringParameter等)
我需要通过一个可变的?
以下示例不起作用
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:itematConnectionString %>" 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" >
<SelectParameters>
<asp:Parameter DefaultValue="<%= userId %>" Name="userId" DbType="Guid" />
</SelectParameters>
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)
Pha*_*rus 27
你总是可以在后面的代码中这样做:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:itematConnectionString %>">
Run Code Online (Sandbox Code Playgroud)
编辑
试试这个,删除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"
Run Code Online (Sandbox Code Playgroud)
然后在后面的代码中执行此操作:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:itematConnectionString %>"
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"></asp:SqlDataSource>
SqlDataSource1.SelectParameters.Add("userid", DbType.Guid, userId.ToString());
Run Code Online (Sandbox Code Playgroud)
这对我有用,这也有效:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:itematConnectionString %>">
Run Code Online (Sandbox Code Playgroud)
Al *_*l W 12
我们必须经常这样做,所以我做了我所谓的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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
将此类放在app_code中(如果将其放在那里,则删除命名空间)或在自定义控件程序集中.在web.config中注册控件后,您应该能够执行此操作
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:itematConnectionString %>"
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">
<SelectParameters>
<asp:DelegateParameter Name="userId" DbType="Guid" OnEvaluate="GetUserID" />
</SelectParameters>
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)
然后在你背后的代码中实现你喜欢的GetUserID.
protected object GetUserID(object sender, EventArgs e)
{
return userId;
}
Run Code Online (Sandbox Code Playgroud)
小智 9
只需在页面中添加一个自定义属性即可返回您选择的变量.然后,您可以使用内置的"control"参数类型.
在后面的代码中,添加:
Dim MyVariable as Long
ReadOnly Property MyCustomProperty As Long
Get
Return MyVariable
End Get
End Property
Run Code Online (Sandbox Code Playgroud)
在select parameters部分中添加:
<asp:ControlParameter ControlID="__Page" Name="MyParameter"
PropertyName="MyCustomProperty" Type="Int32" />
Run Code Online (Sandbox Code Playgroud)
附加到GUID:
SqlDataSource1.SelectParameters.Add("userId", System.Data.DbType.Guid, userID);
Run Code Online (Sandbox Code Playgroud)
您可以使用 asp:SqlDataSource 内置的 OnSelecting 参数
示例:[.aspx 文件]
<asp:SqlDataSource ID="SqldsExample" runat="server"
SelectCommand="SELECT [SomeColumn], [AnotherColumn]
FROM [SomeTable]
WHERE [Dynamic_Variable_Column] = @DynamicVariable"
OnSelecting="SqldsExample_Selecting">
<SelectParameters>
<asp:Parameter Name="DynamicVariable" Type="String"/>
</SelectParameters>
Run Code Online (Sandbox Code Playgroud)
然后在后面的代码中实现 OnSelecting 方法:[.aspx.cs]
protected void SqldsExample_Selecting(object sender, SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters["@DynamicVariable"].Value = (whatever value you want);
}
Run Code Online (Sandbox Code Playgroud)
您还可以将其用于其他类型的数据库操作,只需实现您自己的方法:
OnInserting="SqldsExample_Inserting"
OnUpdating="SqldsExample_Updating"
OnDeleting="SqldsExample_Deleting"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106364 次 |
| 最近记录: |