0

为什么这个网格没有出现在我的网页上?我正在用静态项目填充下拉列表,用户将填写文本框。我不需要进行数据绑定或拥有数据源(我不认为)。正确的?

我的目标是:在 ASP.NET Web 窗体中添加多行数据的最简单方法

        <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>
4

2 回答 2

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">
于 2013-11-07T20:49:06.090 回答
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>

要使用此网格视图输入数据,即使用页脚模板并在网格视图上将显示页脚属性设置为 true。页脚仍然不会显示没有数据的位置,因此您需要自定义您的网格视图来做到这一点。一个简单的方法是使用空数据模板输入初始的第一行。还有其他优雅的方法来操作页脚以显示何时没有数据源返回的记录。在此处查看文章

于 2013-11-08T08:00:28.023 回答