从DataTable中获取值而不绑定数据到UI控件?
问题描述:
我总是从数据库中获取的值直接到这样的控制:从DataTable中获取值而不绑定数据到UI控件?
代码隐藏:
DataTable table = GetUserInfo();
UserInfo.DataSource = table;
UserInfo.DataBind();
string FirstName = lblFirstName.Text;
string LastName = lblLastName.Text;
DateTime BecomeAMember = DateTime.Parse(lblBecomeAMember.Text);
标记:
<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;
我需要从分钟和小时,并且我不想使用另一个Label
与完整DateTime
并使其不可见。知道如何获得其他值也是很好的。
答
您可以使用DataTable
方法直接从table
对象读取值。
例如,
string firstName = table.Rows[0]["FirstName"].ToString();
或
foreach (DataRow row in table.Rows)
{
//
}
或者使用SELECT()方法来搜索的指定字段。
DataRow[] rows = table.Select("column1='value1'");
+0
是的,这就是我要找的东西,thx! – user1007103 2011-12-19 13:40:45
答
是的,您可以直接调查保存在DataTable
中的数据。
DataTable
can be made into an IEnumerable
, and can be queried.你的情况:使用
var dt = (DateTime) table.Rows[0]["BecomeAMember"];
然后格式dt
:
var datetimes = table.AsEnumerable().Select(x => x.Field<DateTime>("BecomeAMember"));
如果你真的只希望单行,则可以执行:
var dt = table.AsEnumerable().Select(x => x.Field<DateTime>("BecomeAMember")).Single();
或带有格式字符串的ToString
。
由于您的控件具有runat = server集,您不能只将值分配给后面代码中的标签并相应地设置格式? – 2011-12-19 13:33:04