-3

私はストアドプロシージャが初めてです。

ストアド プロシージャから取得するデータの形式を変更したいと考えています。たとえば、列が の文字列値を返します。20110918190154これを に変更したいと思い2011/09/18 19:01:54ます。

これは、ストアド プロシージャを実行して次のように返す方法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");

そして、次のようなグリッドビュー

<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");
    }

最後に、リストをグリッドビューにバインドします

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

問題が解決することを願っています。

于 2012-10-24T04:00:12.870 に答える