簡體   English   中英

檢查dataype是否是綁定數據中的日期

[英]checking if dataype is date in bound data

我需要在gridview中格式化datetime以僅顯示日期。 在從sql提取過程中,我不能只是更改單個列的格式,因為代碼使用.net生成的SqlDataAdapter.Fill。 我閱讀了其他stackoverflow問題,以了解如何更改綁定字段中的日期格式,而其他答案則要求使用諸如gridview之類的東西。 如果我嘗試只是鍵入和使用它,就不會找到智能感知的格式,並且毫不奇怪地給了我一個沒有定義的編譯錯誤。 我不能簡單地在aaspx中更改屬性,因為它是以編程方式生成的gridview。

有沒有一種方法可以在gridview中的列之間進行枚舉,並檢查列是否已經是日期時間類型(它們將作為日期時間從sql中傳入,排序已經正常工作,因此它們不會作為字符串傳入)並進行更改那些日期的格式? 當前,當我嘗試枚舉各列時,它會跳過,因為在數據綁定期間,GridView中的列數仍為0。或者有人認為它會便宜些,因為有成千上萬的行進來了,所以如果我可以僅格式化列或整個gridview以獲得日期時間信息,則可能會更好。 謝謝

編輯:我找到了一種方法,將其放在gridview_RowDataBound中

                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    AutoGeneratedField field = cell.ContainingField as AutoGeneratedField;
                    if (field != null && field.DataType == typeof(DateTime))
                        cell.Text = DateTime.Parse(cell.Text).ToShortDateString();
                }

即使SQL由數據適配器執行,也可以使用“轉換”功能修改“選擇”命令中的代碼以將日期時間字段轉換為字符串。 就像是

SELECT field1, field2,..., fieldN, convert(varchar, getdate(), 103) as mydate

或者,如果無法以任何方式修改SELECT,則可以在數據表中快速添加一個字段,並將日期以字符串格式放在該字段上(但這很耗時),並且只有當您可以隱藏時才能作為解決方案您的gridview列,以便僅顯示格式化的字符串。

我認為更好的方法是更改​​選擇,或者更好,如果您需要數據的特定視圖,只需使用所需的數據創建正確的SQL查詢,使用DataReader調用它,然后創建一個數據表以用作源您的gridview,並保留標准的select命令以用於更多特定用途。 高溫超導

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM