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

发布于 2024-09-03 15:44:24 字数 270 浏览 3 评论 0原文

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

记录 字段“姓名”=“杰克” 字段“金额”= 100 字段“日期”= 12.02.2010

asp:Label 文本最终应为:

Welcome Jack,最后付款为 100 on 12.02.2010

如果另一个控件比 asp:Label 更合适,那么知道这一点也很好。

Is it possible using Eval? If so, can someone post a short fragment to illustrate? My SqlDataSource returns 1 record with 3 fields, I'd like to Format these into a string. eg:

Record
Field 'Name' = 'Jack'
Field 'Amount' = 100
Field 'Date' = 12.02.2010

asp:Label text should end up being:

Welcome Jack, last payment was 100 on 12.02.2010

if another control than asp:Label is appropriate, that would be good to know also.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

︶ ̄淡然 2024-09-10 15:44:24

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

Label's the right control for what you want to display, but SqlDataSource probably isn't the right control for getting the data. Labels have no DataSourceID property that allows you associate the controls together - whilst you might be able to do some plumbing in your server-side code to make it work, my suspicion is it'd be more efficient to get the relevant DataRow during Page_Load, build the string and then put that into the Text property of the Label.

孤千羽 2024-09-10 15:44:24

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

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

Thanks for the steer Phil, this is my solution (error checking to do, critique welcome):

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);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文