2011-12-19 7 views
1

私はいつも直接、このような制御にデータベースから値を取得:UIコントロールにデータをバインドせずにDataTableから値を取得しますか?

コードビハインド:

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が設定されているため、コードの背後にあるラベルに値を割り当てて、それに応じて書式を設定することはできませんか? –

答えて

3

tableオブジェクトから値を直接読み取るには、DataTableメソッドを使用できます。

例えば、

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

または

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

または指定したフィールドを検索するセレクト()メソッドを使用します。

DataRow[] rows = table.Select("column1='value1'"); 
+0

はい、それは私が探しているもの、thxです! – user1007103

2

はい、DataTableに保持されているデータを直接調査することができます。あなたのケースでは

DataTable can be made into an IEnumerable, and can be queried.:あなたは本当に唯一の単一の行を期待していた場合

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

関連する問題