我有一個dataGridView
,這是數據綁定到一些generic List<T>
(而T是一些具有屬性的自定義類)。 問題是,其中一個屬性是integer
類型,它代表了分鐘。 將List綁定到dataGridView之後,我希望該列顯示小時數,而不是默認分鐘數。如何更改列值以顯示綁定DataGridView中的不同值?
如何更改某些列的行爲,使用它的一些數學來顯示有點不同的值?
我必須在DataGridView.CellFormating
事件中執行此操作嗎?
我有一個dataGridView
,這是數據綁定到一些generic List<T>
(而T是一些具有屬性的自定義類)。 問題是,其中一個屬性是integer
類型,它代表了分鐘。 將List綁定到dataGridView之後,我希望該列顯示小時數,而不是默認分鐘數。如何更改列值以顯示綁定DataGridView中的不同值?
如何更改某些列的行爲,使用它的一些數學來顯示有點不同的值?
我必須在DataGridView.CellFormating
事件中執行此操作嗎?
您有兩種選擇,第一種是首先操縱Generic List<T>
,這應該比使用第二種選擇更快,通過遍歷每個RowDataBound Event
上的列表。
使用RowDataBound
事件
保護無效gridview1_RowDataBound(對象發件人,GridViewRowEventArgs E) { 如果(e.Row.RowType == DataControlRowType.DataRow) { INT分鐘= INT。解析(e.Row.Cells [YourColumnIndex]。文本); 十進制小時=分鐘/ 60;
e.Row.Cells [YourColumnIndex] .Text = hours.ToString(); }}
使用Evel
表達
ASPX頁面
<asp:TemplateField HeaderText="Time">
<ItemTemplate>
<%# ConvertToHours(Eval("Minutes"))%>
</ItemTemplate>
</asp:TemplateField>
代碼隱藏
private string ConvertToHours(object objMin)
{
if (Convert.ToInt32(objMin) == 1)
{
return (int.Parse(objMin)/60).ToString();
}
else
{
return "0";
}
}
另一種方法。 - 全力以赴。
<asp:TemplateField HeaderText="Time">
<ItemTemplate>
<asp:Label ID="lblTime" runat="server" Text='<%# Convert.ToInt32(Eval("Time")) Convert.ToInt32("60")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
更新:作爲問題更新,那麼對於Windows窗體應用程序,你應該DataGridView.CellFormatting Event
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
// If the column is the Time column, check the
// value.
if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Time")
{
if (e.Value != null)
{
//Your implementation.
}
}
}
我使用的是windows窗體使用。 –
@MitjaBonca - ops!然後檢查更新的答案。 – MuhammadHani