MyDataSource是存储在通过搜索页面传递的会话中的数据源
protected void Page_Load(object sender, EventArgs e)
{
gridview1.DataSource = Session["MyDataSource"];
gridview1.DataBind();
}
gridview1是一个gridview,没有数据源等待页面加载事件将它绑定到数据源,在我的例子中是MyDataSource
<asp:GridView ID="gridview1" runat="server" BackColor="LightGoldenrodYellow"
BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black"
GridLines="None">
<AlternatingRowStyle BackColor="PaleGoldenrod" />
<FooterStyle BackColor="Tan" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue"
HorizontalAlign="Center" />
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<SortedAscendingCellStyle BackColor="#FAFAE7" />
<SortedAscendingHeaderStyle BackColor="#DAC09E" />
<SortedDescendingCellStyle BackColor="#E1DB9C" />
<SortedDescendingHeaderStyle BackColor="#C2A47B" />
</asp:GridView>
此网格视图中显示的日期显示为M / d / yyyy +时间 例如12/31/2010 00:00:00
我的问题:我需要一种方法来显示日期为d / M / yyyy,例如没有时间 31/12/2010 通常我通过设置gridview属性来执行此操作htmlencode = false和dateformatstring =“{0:M-dd-yyyy}” 但在这种情况下,gridview不显示任何字段,因为它仅在运行时绑定数据
请尽快在这个问题上帮助你。 提前谢谢
答案 0 :(得分:3)
尝试使用此代码:
<asp:GridView ID="gridview1" runat="server" BackColor="LightGoldenrodYellow"
BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black"
GridLines="None" AutoGenerateColumns="false">
<AlternatingRowStyle BackColor="PaleGoldenrod" />
<FooterStyle BackColor="Tan" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue"
HorizontalAlign="Center" />
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<SortedAscendingCellStyle BackColor="#FAFAE7" />
<SortedAscendingHeaderStyle BackColor="#DAC09E" />
<SortedDescendingCellStyle BackColor="#E1DB9C" />
<SortedDescendingHeaderStyle BackColor="#C2A47B" />
<Columns>
<asp:BoundField DataField="PropertyName" />
<asp:BoundField DataField="PropertyName" />
<asp:BoundField DataField="DateTimeProperty" DataFormatString="{0:dd/M/yyyy}" />
</Columns>
它在我的电脑上工作正常。希望它会对你有所帮助。
祝你好运, 迪马。
答案 1 :(得分:2)
除非您告诉它要显示什么,否则gridview不会显示任何数据。
快速修复将是这样的:
<asp:GridView ID="gridview1" runat="server" OnRowDataBound="gridview1_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="dateLabel" runat="server" />
<ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
然后在您的代码隐藏中:
protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow && e.Row.DataItem != null)
{
var item = (MyCustomDataBoundObject)e.Row.DataItem;
var dateLabel = (Label)gridview1.FindControl("dateLabel");
dateLabel.Text = item.Date.ToString("dd/MM/yyyy");
}
}
以上是未经测试的,但应该足以让你得到你想要的东西。
出于好奇,你为什么要通过会话传递数据源?我对你的应用程序一无所知,但它从来都不是我以前采用的方法。为什么不将gridview绑定到您在aspx页面中定义的objectdatasource?然后你可以使用一个简单的绑定列。