Получить значения из DataTable без привязки данных к элементам управления пользовательского интерфейса? - PullRequest
1 голос
/ 19 декабря 2011

Я всегда получаю значения из базы данных напрямую в элемент управления, подобный этому:

Код-за:

DataTable table = GetUserInfo();

UserInfo.DataSource = table;
UserInfo.DataBind();

string FirstName = lblFirstName.Text;
string LastName = lblLastName.Text;
DateTime BecomeAMember = DateTime.Parse(lblBecomeAMember.Text);

Markup:

<asp:Label ID="lblCity" runat="server" Text='<%# Eval("FirstName") %>' />
<asp:Label ID="lblLastName" runat="server" Text='<%# Eval("LastName") %>' />
<asp:Label ID="lblBecomeAMember" runat="server" Text='<%# Eval("BecomeAMember", "{0:dd MMM yyy) %>' />

Должен быть способ использовать данные в выделенном коде, не помещая их в метку, а затем использовать String text = label.Text;

Мне нужны минуты и часы с BecomeAMember, и я не хочу использовать другой Label с полным DateTime и сделать его невидимым. Было бы неплохо узнать, как получить и другие значения.

Ответы [ 2 ]

3 голосов
/ 19 декабря 2011

Вы можете использовать методы DataTable для чтения значений непосредственно из объекта table.

Например,

string firstName = table.Rows[0]["FirstName"].ToString();

или

foreach (DataRow row in table.Rows)
{
    //
}

Илииспользуйте метод Select () для поиска в указанном поле.

DataRow[] rows = table.Select("column1='value1'");
2 голосов
/ 19 декабря 2011

Да, вы можете напрямую исследовать данные, хранящиеся в DataTable.

DataTable, могут быть преобразованы в IEnumerable и могут быть запрошены. В вашем случае:

var datetimes = table.AsEnumerable().Select(x => x.Field<DateTime>("BecomeAMember"));

Если вы действительно ожидаете только одну строку, вы можете сделать:

var dt = table.AsEnumerable().Select(x => x.Field<DateTime>("BecomeAMember")).Single();

или:

var dt = (DateTime) table.Rows[0]["BecomeAMember"];

Затем отформатируйте dt, используяToString со строкой формата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...