我在Codebehind中有一个带有int的aspx-Page:
private const int id = 11;
在Markup我有
<asp:SqlDataSource ID="SqlDataSource" runat="server"
SelectCommand="SELECT Name FROM [StatusOption] WHERE StatusId = 11">
我想在标记中引用codebehind中的id,这样我只需要在必要时在代码隐藏中更改它。是否可能以及如何。
答案 0 :(得分:2)
您可以在SqlDataSource.Selecting
事件中设置所需的值。
我为您的数据源statusId
添加了一个新的select参数,并在SqlDataSource_Selecting
事件处理程序中为其设置了一个值:
<asp:SqlDataSource ID="SqlDataSource" runat="server"
SelectCommand="SELECT Name FROM [StatusOption] WHERE StatusId = @statusId"
OnSelecting="SqlDataSource_Selecting">
<SelectParameters>
<asp:Parameter Name="statusId" Type="Int32" />
</SelectParameters>
然后在代码隐藏中:
protected void SqlDataSource_Selecting(
object sender,
SqlDataSourceSelectingEventArgs e)
{
e.Command.Parameters["@statusId"].Value = id;
}
答案 1 :(得分:1)
一种方法是使用id中的值以编程方式设置SelectCommand,此问题解决了:sqldatasource-set-selectcommand-dynamicly。
此论坛帖子programatically change sqldatasource select statement中讨论了另一种类似的方法。