什么是在asp.net 4.0中将sqldatasource绑定到asp:label的正确方法?

时间:2010-05-30 10:01:17

标签: .net asp.net asp.net-4.0

是否可以使用Eval?如果是这样,有人可以发一个简短的片段来说明吗?我的SqlDataSource返回带有3个字段的1条记录,我想将它们格式化为字符串。例如:

记录   Field'Name'='杰克'   字段'金额'= 100   Field'Date'= 12.02.2010

asp:标签文本最终应该是:

欢迎杰克,最后一笔付款是100于12.02.2010

如果是另一个控件而不是asp:标签是合适的,那也很好。

2 个答案:

答案 0 :(得分:2)

Label是您想要显示的内容的正确控件,但SqlDataSource可能不是获取数据的正确控件。标签没有DataSourceID属性,允许您将控件关联在一起 - 虽然您可以在服务器端代码中进行一些管道以使其工作,但我怀疑在Page_Load期间获取相关DataRow会更有效率,构建字符串,然后将其放入Label的Text属性中。

答案 1 :(得分:1)

感谢导师菲尔,这是我的解决方案(错误检查,批评欢迎):

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);
}