在 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);
我使用 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);