从标记中的codebehind引用int(.Net)

时间:2011-03-23 11:41:26

标签: .net asp.net markup code-behind

我在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,这样我只需要在必要时在代码隐藏中更改它。是否可能以及如何。

2 个答案:

答案 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中讨论了另一种类似的方法。