从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并使其不可见。知道如何获得其他值也是很好的。

+1

由于您的控件具有runat = server集,您不能只将值分配给后面代码中的标签并相应地设置格式? – 2011-12-19 13:33:04

您可以使用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