是否可以使用 Eval?如果是这样,有人可以发布一个简短的片段来说明吗?我的 SqlDataSource 返回包含 3 个字段的 1 条记录,我想将它们格式化为字符串。例如:
记录字段“名称”=“杰克”字段“金额”=100 字段“日期”=12.02.2010
asp:Label 文本最终应该是:
欢迎杰克,最后一次付款是 100 于 2010 年 2 月 12 日
如果除 asp:Label 之外的其他控件是合适的,那也很高兴知道。
是否可以使用 Eval?如果是这样,有人可以发布一个简短的片段来说明吗?我的 SqlDataSource 返回包含 3 个字段的 1 条记录,我想将它们格式化为字符串。例如:
记录字段“名称”=“杰克”字段“金额”=100 字段“日期”=12.02.2010
asp:Label 文本最终应该是:
欢迎杰克,最后一次付款是 100 于 2010 年 2 月 12 日
如果除 asp:Label 之外的其他控件是合适的,那也很高兴知道。
Label 是您想要显示的正确控件,但 SqlDataSource 可能不是获取数据的正确控件。标签没有允许您将控件关联在一起的 DataSourceID 属性-虽然您可以在服务器端代码中进行一些检查以使其工作,但我怀疑在 Page_Load 期间获取相关 DataRow 会更有效,构建字符串,然后将其放入 Label 的 Text 属性中。
感谢指导菲尔,这是我的解决方案(错误检查,欢迎批评):
private void DataSourceIntoLabel(Label label,
SqlDataSource dataSource,
ParameterCollection parameters,
string formatString,
string[] columnNames)
{
dataSource.SelectParameters.Clear();
foreach (System.Web.UI.WebControls.Parameter p in parameters)
{
dataSource.SelectParameters.Add(p);
}
IEnumerable rows = dataSource.Select(DataSourceSelectArguments.Empty);
IEnumerator enumerator = rows.GetEnumerator();
enumerator.MoveNext();
DataRowView rowView = (DataRowView)enumerator.Current;
label.Text = string.Format(formatString, rowView.Row.ItemArray);
}