为什么我的网页上没有显示此网格?我使用静态项填充下拉列表,用户将填写文本框。我不需要做数据绑定或拥有数据源(我不认为)。正确?
我的目标是:Easiest way to add multiple rows of data in ASP.NET Web Forms
<asp:GridView ID="gvPurchaseDetails" runat="server" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical" AutoGenerateColumns="true">
<AlternatingRowStyle BackColor="Gainsboro" />
<Columns>
<asp:TemplateField HeaderText="Description">
<ItemTemplate>
<asp:DropDownList runat="server">
<asp:ListItem Selected="True" Value="72594206916">Heart Pndnt Necklace (72594206916)</asp:ListItem>
<asp:ListItem Selected="True" Value="72594206916">Heart Pndnt Necklace (72594206916)</asp:ListItem>
<asp:ListItem Selected="True" Value="72594206916">Heart Pndnt Necklace (72594206916)</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Quantity">
<ItemTemplate>
<asp:TextBox ID="txtQuantity" runat="server" Width="25px" MaxLength="2" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Purchase Date">
<ItemTemplate>
<asp:TextBox ID="txtPurchaseDate" runat="server" Width="25px" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Purchase City">
<ItemTemplate>
<asp:TextBox ID="txtPurchaseCity" runat="server" Width="25px" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Purchase State">
<ItemTemplate>
<asp:TextBox ID="txtPurchaseState" runat="server" Width="25px" MaxLength="2" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
<HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<RowStyle BackColor="#EEEEEE" ForeColor="Black" />
<SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F1F1F1" />
<SortedAscendingHeaderStyle BackColor="#0000A9" />
<SortedDescendingCellStyle BackColor="#CAC9C9" />
<SortedDescendingHeaderStyle BackColor="#000065" />
</asp:GridView>
答案 0 :(得分:2)
您需要设置数据源:
if (!IsPostBack)
{
gvPurchaseDetails.DataSource = GetPurchaseDetails(/* Get the data */);
gvPurchaseDetails.DataBind();
}
<强>更新强> 您需要使用EditItemTemplate:
<EditItemTemplate>
...
</EditItemTemplate>
这些属性添加到GridView声明中:
OnRowEditing="PurchaseGrid_RowEditing"
OnRowCancelingEdit="PurchaseGrid_RowCancelingEdit"
OnRowDeleting="PurchaseGrid_RowDeleting"
OnRowUpdating="PurchaseGrid_RowUpdating">
答案 1 :(得分:1)
我不需要进行数据绑定或拥有数据源(我不认为)。对吗?的
您需要数据源。即使网格中包含静态数据的控件,它仍然需要其数据源。
默认情况下,当数据源没有返回数据时,网格视图将不会呈现。在这种情况下为您提供视觉提示,当没有要显示的记录时,将空数据模板显示为空文本。
<asp:GridView ID="gvPurchaseDetails" runat="server" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical" AutoGenerateColumns="true">
<AlternatingRowStyle BackColor="Gainsboro" />
<Columns>
<asp:TemplateField HeaderText="Description">
<ItemTemplate>
<asp:DropDownList runat="server">
<asp:ListItem Selected="True" Value="72594206916">Heart Pndnt Necklace (72594206916)</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
<edititemtemplate>
<asp:TextBox id="TextBoxEdit" runat="server" />
</edititemtemplate>
<footertemplate>
<asp:TextBox id="TextBox1" runat="server" />
</footertemplate>
</asp:TemplateField>
</columns>
<EmptyDataTemplate>
Oops I have not data to show
<asp:TextBox id="TextBoxNew" runat="server" />
</EmptyDataTemplate>
</asp:Gridview>
要使用此网格视图输入数据,即在网格视图中使用页脚模板并将show footer属性设置为true时。页脚将无法显示没有数据的位置,因此您需要自定义你的网格视图来做到这一点。一种简单的方法是使用空数据模板进入第一行的第一行。当数据源没有返回记录时,还有其他优雅的方法可以操作页脚来显示。查看文章here