我正在動態顯示我的GridView,但我想添加一個名爲Not POD的新列。 您可以在圖像中看到作業和POD列。我想創建一個等於Jobs減去POD的新列。因此,例如在第一行中,新列應顯示1(14 - 13)。如何基於其他列中的值動態添加新列?
回答
這不應該是複雜的,到GridView,你有什麼來源,我想DataTable/Dataset
,現在你需要做的後獲取的DataTable (dt)
是什麼:
- 添加
DataColumn
編程使用像一個代碼:
1)dt.Columns.Add("ColumnName",Type);
在這種情況下:
dt.Columns.Add("NoPOD",typeof(int));
檢查鏈接:
Add Data Columns to Data Table - MSDN
Add Data Columns to Data Table
2)現在,你需要在DataTable
編程分配值DataColumn
,使用一個代碼如:
for(int index=0; index=dt.Rows.Count-1; index++)
{
dt.Rows[index]["NoPOD"] = Convert.ToInt32(dt.Rows[index]["Jobs"]) - Convert.ToInt32(dt.Rows[index]["POD"])
}
現在,DataTable
將包含相關列,並且您可以使用網格視圖進行綁定,因此它將包含新添加的列。如果你綁定到類似List<T>
那麼類似的過程可以遵循
添加一個TemplateField到你的GridView,在所有的BoundFields之後。例如
<asp:TemplateField HeaderText="Non POD">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Convert.ToInt32(Eval("Jobs")) - Convert.ToInt32(Eval("POD")) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
我沒有任何BoundFields。這些列正在動態創建。 – user123456789
如果您在代碼隱藏中動態創建它們,那麼您是以什麼方式阻止您以相同的方式創建列?如果你的gridview使用的是數據源,那麼將AutoGenerateColumns設置爲false,你就可以在asp中添加BoundField和TemplateField項目。 – Adrian
感謝您的答案,但我上線的錯誤'指數= dt.Rows.Count-1'不能轉換INT爲bool – user123456789
它必須是在你的代碼中的一些問題,請檢查一下,你的地方正在將int與bool進行比較,所以編譯器正在抱怨。你使用==而不是=。你可能想粘貼你的代碼,這是導致問題提供更多的細節 –