我正在定义一个数据源(用于可排序的列表视图)并且有一个小问题。
与此类似的代码:
<asp:SqlDataSource ID="myDataSource" runat="server"
SelectCommand="SELECT [aField], [bField] FROM Suggestions WHERE stype = 'X'"
ConnectionString="<%$ ConnectionStrings:dbConnectionString %>" >
</asp:SqlDataSource>
但真正的选择字符串要复杂得多,我想做这样的事情:
<asp:SqlDataSource ID="myDataSource" runat="server"
SelectCommand="SELECT [aField], [bField] " +
"FROM Suggestions WHERE stype = 'X'"
ConnectionString="<%$ ConnectionStrings:dbConnectionString %>" >
</asp:SqlDataSource>
我搜索过这些术语的不同变体: concatentation catenation string tag html asp.net
但我找不到任何关于它的内容,虽然看起来它需要字符串文字而不是字符串表达式。所以我最终将这整个复杂的函数定义为数据库中的一个函数,但是现在我想尝试类似的东西:
<asp:SqlDataSource ID="myDataSource" runat="server"
SelectCommand="<% qry_str('X'); %>"
ConnectionString="<%$ ConnectionStrings:dbConnectionString %>" >
</asp:SqlDataSource>
其中qry_str()在代码后面定义;但是,该特定代码不起作用:
代码隐藏定义为:
protected string qry_str(string t)
{
string s =
"SELECT [aField], [bField] " +
"FROM Suggestions WHERE stype = '" + t + "'";
return "s";
}
我不认为背后的代码是问题所在。我认为这是asp.net和我称之为的方式。做我正在做的事情的正确方法是什么?
答案 0 :(得分:1)
您可以在某个页面事件处理程序中设置此属性(更适合您的工作流程)。例如,在Page_Load:
中protected void Page_Load(object sender, EventArgs e)
{
string t = "X"; // calculate t here
myDataSource.SelectCommand = "SELECT [aField], [bField] FROM Suggestions WHERE stype = " + t;
// other actions
}
答案 1 :(得分:1)
您似乎试图将ASPX视为C#。如果您添加了&lt; %%&gt;标记,您应该能够使用C#连接语法:
<asp:SqlDataSource ID="myDataSource" runat="server"
SelectCommand='<% ="SELECT [aField], [bField] " +
" FROM suggestions " +
" WHERE sType='X' " %>'
ConnectionString="<%$ ConnectionStrings:dbConnectionString %>" >
</asp:SqlDataSource>
你可能会在引号内引用“引号”中遇到麻烦 - 所以你可能最终不得不接受安德烈的回答。