как правильно связать sqldatasource с asp:label в asp.net 4.0?

Можно ли использовать Eval? Если да, может ли кто-нибудь опубликовать короткий фрагмент для иллюстрации? Мой SqlDataSource возвращает 1 запись с 3 полями, я хотел бы отформатировать их в строку. например:

Поле записи «Имя» = «Валет» Поле «Сумма» = 100 Поле «Дата» = 12.02.2010

текст asp:Label должен быть таким:

Добро пожаловать Джек, последний платеж был 100 12.02.2010

если подходит другой элемент управления, кроме asp:Label, это также было бы полезно знать.


person Charlie Skilbeck    schedule 30.05.2010    source источник
comment
Извините, чтобы уточнить, это для привязки к asp:Label, который не является частью контейнера данных, такого как GridView. Просто простой asp: Label сам по себе   -  person Charlie Skilbeck    schedule 30.05.2010


Ответы (2)


Label — правильный элемент управления для того, что вы хотите отобразить, но SqlDataSource, вероятно, не подходит для получения данных. Метки не имеют свойства DataSourceID, которое позволяет вам связать элементы управления вместе - хотя вы можете выполнить некоторые действия в своем коде на стороне сервера, чтобы заставить его работать, я подозреваю, что было бы более эффективно получить соответствующий DataRow во время Page_Load, создайте строку, а затем поместите ее в свойство Text метки.

person PhilPursglove    schedule 30.05.2010
comment
Спасибо. Вы имеете в виду открыть базу данных с помощью DAO и выполнить запрос вручную? - person Charlie Skilbeck; 30.05.2010

Спасибо за руководство, Фил, это мое решение (проверка ошибок, критика приветствуется):

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);
}
person Charlie Skilbeck    schedule 30.05.2010
comment
columnNames не используется — пережиток предыдущей итерации. - person Charlie Skilbeck; 31.05.2010