2012-12-23 121 views
0

我有一個gridview並將其綁定到未知列的數據源。操作自動生成列

當我簡單地將它綁定到一個數據網格時,所有工作都找到並且都被綁定了。

但我無法找到根據它們的價值來處理列。

我發現我可以這樣做:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    for (int i = 0; i < e.Row.Cells.Count; i++) 
    { 
     DateTime x; 
     var res =DateTime.TryParse(e.Row.Cells[i].Text,out x); 
     if (res) 
     { 
      TextBox text = new TextBox(); 
      text.Text = e.Row.Cells[i].Text; 
      e.Row.Cells[i].Controls.Clear(); 
      e.Row.Cells[i].Controls.Add(text); 
     } 
    } 
} 

但那extreamly醜陋

有什麼辦法,我可以創造一個DateTime到文本框轉換器,並告訴我的DataGrid中使用它進行數據綁定?

我要去contorl從文本框變爲日期選擇器以後,這僅僅是測試模式..

回答

0

外面非常,非常基本的數據綁定你會發現,你需要的場景關閉AutoGenerateColumns,爲許多(或大多數)列設置TemplateField元素,並使用RowDataBound事件。

對不起,你發現模式醜陋,但自動生成將做到這一點,沒有更多;當網格處理創建列併爲您設置值時,您無法控制值。

+0

但如果我不知道模板,我該怎麼辦? RowDataBound似乎發生後,行已經建成,所以它的雙工... :( – Nahum

+0

我與雅克的意見,並在我看來,自動生成的列也是一個性能問題 – boindiil

+0

性能不是一個問題,只有可擴展性 – Nahum