DateTime 型ではなくて TimeSpan 型で取得されているような気がします(気がするだけで確証はないです)。TimeSpan 型は DateTime 型とは書式設定が異なります。これを試してみてはいかがですか?
カスタム TimeSpan 書式指定文字列
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/custom-timespan-format-strings
【追記】
var time = new TimeSpan(6, 14, 32, 17, 685);
Console.WriteLine("{0:hh\:mm}", time);
// 結果: 14:32
【追記2】
下のコメント欄で「TimeSpan 型で間違いなければ、間違いなく期待通りに表示されるはずです。後で回答欄にどのようにするかを追記しておきます」と書いた件です。
C# の文字列と違って、.aspx では DataFormatString="{0:hh:mm}" で \ はエスケープ不要なのに注意。
.aspx.cs
using System;
using System.Data;
namespace WebApplication1
{
public partial class WebForm20 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.DataSource = CreateDataTable();
GridView1.DataBind();
}
}
protected DataTable CreateDataTable()
{
var table = new DataTable();
table.Columns.Add(new DataColumn("id", typeof(int)));
table.Columns.Add(new DataColumn("name", typeof(string)));
table.Columns.Add(new DataColumn("time", typeof(TimeSpan)));
for (int i = 0; i < 5; i++)
{
var row = table.NewRow();
row["id"] = i;
row["name"] = "name-" + i;
row["time"] = new TimeSpan(6, 14, i, 17, 685);
table.Rows.Add(row);
}
return table;
}
}
}
.aspx
<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="WebForm20.aspx.cs"
Inherits="WebApplication1.WebForm20" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" />
<asp:BoundField DataField="name" HeaderText="name" />
<asp:BoundField DataField="time" HeaderText="time" DataFormatString="{0:hh\:mm}" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
結果
【追記3】
下のコメント欄で「ソースに直接書かなくてもデザイン画面で設定できますし、その方がスペルミスも少なくなるのでお勧めです。後で画像を回答欄に貼っておきます」と書いた件です。