【发布时间】:2016-06-14 21:19:33
【问题描述】:
Gridview 在返回数据时会正确填充,但是 ShowHeaderWhenEmpty、EmptyDataText 和 EmptyDataTemplate 都不起作用,即使没有返回记录也是如此。我已经阅读了有关 CSSFriendly 的其他解决方案以及 CSSFriendly 禁用控件的一些冲突,但这似乎并没有解决问题。
这是我的ASP gridview
<asp:GridView runat="server" class="table table-striped table-hover" ID="gvPendingRequestsEP" GridLines="None" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="submitted_by" HeaderText="submitted by" />
<asp:BoundField DataField="date_submitted" HeaderText="date submitted" />
<asp:BoundField DataField="card_number" HeaderText="Card Number" />
<asp:BoundField DataField="beginning_date" HeaderText="Date" />
<asp:BoundField DataField="beginning_time" HeaderText="time" />
<asp:BoundField DataField="total_time" HeaderText="hours" />
<asp:BoundField DataField="in_place_rank" HeaderText="Time/ Pay" />
<asp:BoundField DataField="status_id" HeaderText="Status" />
<asp:TemplateField>
<HeaderTemplate>
edit
</HeaderTemplate>
<ItemTemplate>
<a href="EPRequest.aspx?id=<%#Eval("card_number") %>">edit</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这是我的代码隐藏
protected void PopulateCardManagers(object sender, EventArgs e)
{
string connstring = ConfigurationManager.ConnectionStrings["TimeHubDBCS"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connstring))
{
SqlCommand cmdFillEP = new SqlCommand();
cmdFillEP = new SqlCommand("spSelectPendingRequestsEP", conn);
cmdFillEP.CommandType = System.Data.CommandType.StoredProcedure;
cmdFillEP.Parameters.Add("@UserId", SqlDbType.VarChar).Value = lblUserLoggedIn.Text;
DataSet dsRequests = new DataSet();
DataTable dtEPCards;
dsRequests.Tables.Add("dtEPCards");
dtEPCards = dsRequests.Tables[0];
SqlDataAdapter daPendingRequestsEP = new SqlDataAdapter();
daPendingRequestsEP.SelectCommand = cmdFillEP;
conn.Open();
try
{
daPendingRequestsEP.Fill(dtEPCards);
gvPendingRequestsEP.DataSource = dtEPCards;
gvPendingRequestsEP.DataBind();
}
catch (Exception ex)
{
PopupTitle = "error populating EP Card Manager: ";
message = ex.Message;
ClientScript.RegisterStartupScript(this.GetType(), "Popup", "ShowPopup('" + message + ex.Message + "');", true);
}
}
}
提前致谢
【问题讨论】:
-
您确定没有发生异常吗?尝试在您的异常块中执行 Response.Write,因为它可能会抑制空模板的显示。
-
当您设置 ShowHeaderWhenEmpty 并且没有显示任何内容时,即使您的代码将您的网格绑定到数据源,这可能意味着您的数据源为空。您可以通过故意将空数据表加载到网格中来避免这种情况
-
@CosmosBanda,看起来这就是问题所在。我添加了一个 if/else 块来测试数据表是否为空,如果是,则将一个空数据表绑定到网格视图。如果您想在下面添加答案,我会将答案归功于您,否则我将自己写并回答。谢谢!