-3

我是存储过程的新手。

我想更改从存储过程中获得的数据格式。比如某列返回的字符串值为20110918190154,我想把它改成2011/09/18 19:01:54

这就是我执行存储过程并返回 a 的方式DataTable

   storedProcCommand = new SqlCommand("GetPurchaseHistory", conn);
   storedProcCommand.CommandType = CommandType.StoredProcedure;
   storedProcCommand.Parameters.Add("@customerID", cCustomerID);
   adapter = new SqlDataAdapter(storedProcCommand);
   adapter.Fill(allData);

在 GridView 中显示数据如下:

   <asp:GridView ID="GridView_PurchaseHistory" runat="server" AutoGenerateColumns="False" >
   <Columns>    
   <asp:BoundField DataField="cTranDateTime" HeaderText="Latest Purchase Date" />
   <asp:BoundField DataField="cItemNo" HeaderText="Item Number" />
   <asp:BoundField DataField="cDescDef" HeaderText="Description" />
   <asp:BoundField DataField="fQty" HeaderText="Total Quantity" />
   </Columns> 
   </asp:GridView>

输出如下:

Latest Purchase Date
20121007193111
20120130171010
20110918190154

我已经编写了子字符串的代码并更改了一次接收 1 个字符串的格式。我想知道是否无论如何我可以将日期存储在临时对象中并相应地更改其格式。或者我是否可以在显示之前进行更改。

非常感谢你..任何建议表示赞赏。

4

1 回答 1

0

假设我有一个字符串列表,如下所示

List<string> dates= new List<string>();
dates.Add("20121007193111");
dates.Add("20120130171010");
dates.Add("20110918190154");

和像这样的gridview

<asp:gridview runat="server" ID="gvDates" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField HeaderText="Last Purchase Date">
            <ItemTemplate>
                <%#ModifyDate(Container.DataItem.ToString())%>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:gridview>

在后面的代码中定义 ModifyDate 函数如下

public string ModifiedDate(string date)
    {
        CultureInfo provider = CultureInfo.InvariantCulture;
        string format = "yyyyMMddHHmmss";
        return DateTime.ParseExact(date, format, provider).ToString("yyyy/MM/dd HH:mm:ss");
    }

最后将列表与gridview绑定

gvDates.DataSource = dates;
gvDates.DataBind();

我希望它能解决你的问题。

于 2012-10-24T04:00:12.870 回答