在 asp.net 中 gridview/database 的文本框中显示日期

display date in textbox from gridview/database in asp.net

我使用 ASP.net 开发了一个 Web 表单,我想 select 该行并将该行数据显示到 Web 表单中,但日期无法显示在 DateTime 类型的文本框中,有人帮忙我来解决这个问题

ASP.Net代码

<div class="col-4">
    <asp:Label ID="Label7" runat="server" Text="Birth Date"></asp:Label>
    <asp:TextBox ID="txtBirthDate" runat="server" TextMode="Date"></asp:TextBox>
    </br>
    <asp:Button ID="btnSave" Text="Save" runat="server" OnClick="btnSave_Click" />
</div>
<div class="col-8">
    <asp:GridView ID="studentGrid" runat="server"
        DataKeyNames="Id"
        OnSelectedIndexChanged="StudentGrid_SelectedIndexChanged">
        <Columns>
            <asp:CommandField ButtonType="Button" ShowSelectButton="True" />
        </Columns>
    </asp:GridView>
</div>

c#代码

protected void StudentGrid_SelectedIndexChanged(object sender, EventArgs e)
{
    try
    {
        selId = Convert.ToInt16(studentGrid.SelectedDataKey[0]);

        if (selId > 0)
        {
            using (var ctx = new dbTestEntities())
            {
                var oldObj = ctx.tblStudents.Find(selId);
                if (oldObj != null)
                {
                    txtBirthDate.Text = oldObj.BirthDate.ToString();
                }
            }
        }
    }
    catch (Exception)
    {
        throw;
    }
}

数据键始终按名称引用。

所以,从网格来看是

 GridView1.DataKeys[5]["ID"]

(获取“ID”的第5行datakey值)

在你的例子中,你有选定的行,所以你需要这个:

selId = Convert.ToInt16(studentGrid.SelectedDataKey["ID"]);

带有 TextMode="Date" 的文本框的日期格式为“yyyy/MM/dd”,但它存储的日期具有默认时间,例如 2021/25/09 12:00:00 AM,因此日期是从数据库中获取的但无法设置为文本框,所以我们需要设置正确的日期格式,如


    txtBirthDate.Text = String.Format("{0:yyyy/MM/dd}", oldObj.BirthDate);