0

我看了又看,我没有看到这个问题的答案。

我有一个绑定到数据网格的日期时间值。我想将该列显示为日期时间,或者如果所述日期时间为空,则为用户单击的 asp:button。

我似乎无法找到有关如何执行此操作的具体信息。我最初的方法是 <% if blah blah then %>,但我似乎无法这种方式获取数据项。我也看过事件,但没有什么可以作为解决方案跳出来(我确定我错了,我只是没有看到它)。

有什么建议么?

4

2 回答 2

1

假设您实际上是指GridView代替DataGrid,否则它会类似地工作(ItemDataBound等等)。

您可以将 aTemplateField与 aLabel和 a一起使用,并在以下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>
于 2012-04-08T20:31:11.773 回答
0

如果您使用的是 ASP.NET 3.5 或更高版本,则应该使用 Gridview。使用模板字段列,添加按钮和标签。在 rowdatabound 事件中,您应该使用 Visible 属性仅显示按钮或标签,具体取决于是否有日期。

于 2012-04-08T21:03:21.110 回答