GridView没有出现在ASP.NET WebForm中

时间:2013-11-07 20:44:01

标签: asp.net gridview webforms

为什么我的网页上没有显示此网格?我使用静态项填充下拉列表,用户将填写文本框。我不需要做数据绑定或拥有数据源(我不认为)。正确?

我的目标是: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>

2 个答案:

答案 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