2011-09-23 50 views
0

我正在嘗試使用LINQ-SQL在ASP.NET網頁上設置文本框。這裏是我必須執行選擇語句的代碼:ASP.NET LINQ SQL獲取特定字段

EQCN = Request.QueryString["EQCN"]; 
    var equipment = from n in db.equipments 
        where n.EQCN.ToString() == EQCN 
        select n; 

如何將TextBox1.text設置爲表中的特定字段?

非常感謝

編輯

我需要輸出表中的每場分爲不同的文本框中。所以執行一個單一的查詢似乎有點多。必須有辦法做到這一點?

感謝

回答

2

您只需要執行一次查詢,但一旦完成,您必須將每個字段分配給一個TextBox。只獲取了單個項目啓動要:

EQCN = Request.QueryString["EQCN"]; 
var equipment = (from n in db.equipments 
       where n.EQCN.ToString() == EQCN 
       select n).FirstOrDefault(); 

然後通過每個文本框分配到相應的字段:

txtName.Text = equipment.Name; 
txtDescription.Text = equipment.Description; 
txtValue1.Text = equipment.Value1; 
txtValue2.Text = equipment.Value2; 
//... 

如果你有幾十個文本框來分配,你可以建立一個可以將數據綁定到一個equipment對象的自定義控件,但即使如此,仍然需要爲控件編寫綁定代碼。

我能想到的完全自動完成這一過程的唯一方法是來命名你的對象中後場每個文本框,然後使用反射來匹配他們將值:

var textboxes = Panel1.Controls.OfType<TextBox>(); 

    foreach (TextBox txt in textboxes) 
    { 
     string fieldname = txt.ID.Remove(0, 3); //"txtDescription" becomes "Description" 

     string value = equipment.GetType().GetProperty(fieldname).GetValue(equipment, null) as string; 
     txt.Text = value; 
    } 
3

那麼你可以選擇適當的領域入手:

EQCN = Request.QueryString["EQCN"]; 
var values = from n in db.equipments 
      where n.EQCN.ToString() == EQCN 
      select n.FieldYouWant; 

// Or possibly Single, or First... 
var singleValue = values.FirstOrDefault(); 

認爲這是你所追求的,但如果它不是,請說明你的問題。

編輯:要回答你的隨訪中,你可以使用:

EQCN = Request.QueryString["EQCN"]; 
var query = from n in db.equipments 
      where n.EQCN.ToString() == EQCN 
      select n; 

// Or possibly Single, or First... 
var entity = query.Single(); 

textBox1.Text = entity.Name; 
textBox2.Text = entity.Description; 
textBox3.Text = entity.Title; 
// etc 

這是假設你要訪問的實體的一切。如果實體是非常大的,你只需要幾個字段,你可能想要做這樣的事情:

EQCN = Request.QueryString["EQCN"]; 
var query = from n in db.equipments 
      where n.EQCN.ToString() == EQCN 
      select new { n.Name, n.Description, n.Title }; 

// Or possibly Single, or First... 
var projection = query.Single(); 

textBox1.Text = projection.Name; 
textBox2.Text = projection.Description; 
textBox3.Text = projection.Title; 

我不知道我其實對夫婦的數據訪問和UI層如此緊密,但這是另一回事......