2011-12-19 70 views
1

我總是從數據庫中獲取的值直接到這樣的控制:從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

回答

3

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

2

是的,您可以直接調查保存在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