2015-10-07 59 views
0

我使用這樣的參考場不產生

<asp:GridView CssClass="table table-striped table-bordered table-condensed" 
      ID="gvDatos" runat="server" DataKeyNames="IdIngrediente" AllowPaging="True" PageSize="4" 
      onselectedindexchanged="GridView_SelectedIndexChanged" onrowcreated="gvDatos_RowCreated" onpageindexchanging="gvDatos_PageIndexChanging"> 

這一個GridView列是結合數據

List<Ingrediente> listaIngredientes = GestorABMCIngredientes.BuscarPorNombre(txtIngBuscar.Text); 
gvDatos.DataSource = listaIngredientes; 
string[] claves = { "IdIngrediente"}; 
gvDatos.DataKeyNames = claves; 
gvDatos.DataBind(); 

而且我的課Ingrediente

public class Ingrediente 
{ 
    public int IdIngrediente { get; set; } 
    public string Nombre { get; set; } 
    public UnidadMedida unidadMedida { get; set; } 
    public int stock { get; set; } 
    public double costoUnitario { get; set; } 
    public bool requiereFrio { get; set; } 
} 
代碼

Ingrediente的所有領域都正確生成列,除了unidadMedida,不是第一類nt,string,double,bool等

我想爲對象的ToString()方法(或類UnidadMedida的任何屬性,我將管理)也獲得該字段的列。

我想過創建一個新的類IngredienteForGridView其中有一個字符串字段,而不是類型UnidadMedida,但我寧願避免,如果我可以。

如何顯示我的GridView的屏幕截圖。請注意,我已經更改了列的標題文本,並且隱藏了columnd Id(這是我隱藏的唯一列,並且即使在執行列隱藏之前也存在此問題)enter image description here 列unidadMedida丟失(來自row.cells計數我推斷它沒有被生成)

+0

您的列是否自動生成? – Bharadwaj

+0

是的,它們是自動生成的 – Blueriver

回答

1

如何在標記中爲此列添加模板字段?

<asp:GridView ...> 
    <Columns> 
     <TemplateField HeaderText="Blah"> 
      <%# ((UnidadMedida)Eval("unidadMedida")).YourMethodHere() %> 
     </TemplateField> 
    </Columns> 
</asp:GridView> 

值得關注的是這種方法,一些列的產生是汽車和一些列習慣定義,你將無法控制它們出現的順序。自定義列總是排在第一位。

如果這不是您想要的順序,那麼您最好的選擇是以自定義的方式列出您擁有的所有列。是的,多一點工作,但是你可以擺脫隱藏的黑客行爲,並且你還可以更好地控制網格視圖外觀。幸運的是,沒有必要爲大多數模板定義模板:

<Columns> 
    <BoudField DataField="Nombre" HeaderText="Nombre" /> 
    <TemplateField HeaderText="Blah"> 
     <%# ((UnidadMedida)Eval("unidadMedida")).YourMethodHere() %> 
    </TemplateField> 
    <BoudField DataField="costoUnitario" HeaderText="Costo Unitario"/> 
</Columns> 
+0

聽起來很不錯。有沒有辦法在後面的代碼中做到這一點?不是我在那裏嚴格需要它,而是因爲我們正在學習新的東西...... :)。我會在一分鐘內實現這一點,看看它是怎麼回事 – Blueriver

+0

@Blueriver,做什麼?定義自定義列?是的,它可以在代碼後面完成,但這是一個非常糟糕的做法,因爲它需要更多的代碼和更多的維護,然後用aspx聲明。我強烈建議不要這樣做 – Andrei

+0

我終於有一些時間來嘗試這一嘗試(大量的事情發生......),並可以得到它的工作。非常感謝你!如果你不介意的話,我會編輯你的答案,稍作修改就可以編譯。再次感謝你<3 – Blueriver