我看了看,但我没有看到答案。
我有一个绑定到数据网格的日期时间值。我想将列显示为日期时间,或者如果所述日期时间为空,则为用户单击的asp:按钮。
我似乎无法找到有关如何操作的具体信息。我的初始方法是<%if blah blah then%>,但我似乎无法以这种方式在数据项目中获得。我也看了一下事件,但没有什么可以作为解决方案向我跳出来(我确定我错了,我只是没有看到它)。
有什么建议吗?
答案 0 :(得分:1)
假设您实际上是GridView
而不是DataGrid
,否则它的工作方式类似(ItemDataBound
等。)
您可以使用TemplateField
Label
和Button
,并在RowDataBound
中切换两个控件的可见性:
protected void Grid_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var row = ((DataRowView)e.Row.DataItem).Row;
DateTime? date = row.Field<DateTime?>("DateColumn");
var lblDate = (Label)e.Row.FindControl("LblDate");
var btnDate = (Button)e.Row.FindControl("BtnDate");
lblDate.Visible = date.HasValue;
btnDate.Visible = !date.HasValue;
if (date.HasValue) lblDate.Text = date.ToString();
}
}
ASPX:
<asp:GridView ID="GridView1" AutoGenerateColumns="false" OnRowDataBound="Grid_RowDataBound" runat="server">
<Columns>
<asp:TemplateField HeaderText="DateColumn">
<ItemTemplate>
<asp:Label ID="LblDate" runat="server"></asp:Label>
<asp:Button ID="BtnDate" Text="click me" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
答案 1 :(得分:0)
如果您使用的是ASP.NET 3.5或更高版本,则应使用Gridview。使用templatefield列添加按钮和标签。在rowdatabound事件中,您应该只显示按钮或标签,使用Visible属性,具体取决于是否有日期。