首页 文章

Gridview空行问题

提问于
浏览
1

我正在使用以下代码向ASP.net gridview添加新行 . 问题是我创建的每一个新行都是空白的 . 我在行中的细胞中循环,发现它们中的大多数都是空格() . 我到处寻找一个不同的代码片段,但是一切都让我:创建一个新的数据表,向其添加一行,将gridview数据源设置为数据表 . 我之前已经使用过这个控件十几次而且之前从未使用过它,这很奇怪 .

class 变量

public partial class DMREntry : System.Web.UI.Page
{
    private DataTable _Parts
    {
        get { return (DataTable)ViewState["Parts"]; }
        set { ViewState.Add("Parts", value); }
    }
    ...

添加行代码 . 请注意,我的文本框和我的gridview位于更新面板中 .

if (_Parts == null)
        {
            _Parts = new DataTable();
            _Parts.Columns.Add("Part No");
            _Parts.Columns.Add("Qty");
            _Parts.Columns.Add("Description");
            _Parts.Columns.Add("Vendor");
            _Parts.Columns.Add("Vendor Part");
            _Parts.Columns.Add("Cost");
            _Parts.Columns.Add("PO Number");
            _Parts.Columns.Add("Delivery Date");
            _Parts.Columns.Add("Total Cost");
        }

        DataRow dr = _Parts.NewRow();

        dr["Part No"] = txtPartNo.Text;
        dr["Qty"] = txtQty.Text;
        dr["Description"] = txtDescription.Text;
        dr["Vendor"] = txtVendor.Text;
        dr["Vendor Part"] = txtVendorPart.Text;
        dr["Cost"] = txtCost.Text;
        dr["PO Number"] = txtPONumber.Text;
        dr["Delivery Date"] = txtDeliveryDate.Text;
        dr["Total Cost"] = txtTotalCost.Text;
        // At this point, DR has the correct values

        _Parts.Rows.Add(dr);
        _Parts.AcceptChanges();
        gvParts.DataSource = _Parts;
        gvParts.DataBind();

        upGrid.Update();

GridView标记:

`<asp:GridView ID="gvParts" runat="server" AutoGenerateColumns="False" PageSize="5" 
    Width="787px" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" 
    BorderWidth="1px" CellPadding="3" 
            onselectedindexchanged="gvParts_SelectedIndexChanged1" AllowPaging="True" 
            AllowSorting="True">
        <Columns>
            <asp:TemplateField HeaderText="Part No"></asp:TemplateField>
            <asp:TemplateField HeaderText="Qty"></asp:TemplateField>
            <asp:TemplateField HeaderText="Description"></asp:TemplateField>
            <asp:TemplateField HeaderText="Vendor"></asp:TemplateField>
            <asp:TemplateField HeaderText="Vendor Part"></asp:TemplateField>
            <asp:TemplateField HeaderText="Cost"></asp:TemplateField>
            <asp:TemplateField HeaderText="PO Number"></asp:TemplateField>
            <asp:TemplateField HeaderText="Delivery Date"></asp:TemplateField>
            <asp:TemplateField HeaderText="Total Cost"></asp:TemplateField>
            <asp:CommandField ButtonType="Button" ShowEditButton="True" />
            <asp:CommandField ButtonType="Button" ShowDeleteButton="True" />
        </Columns>
        <FooterStyle BackColor="White" ForeColor="#000066" />
        <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
        <RowStyle ForeColor="#000066" />
        <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
        <SortedAscendingCellStyle BackColor="#F1F1F1" />
        <SortedAscendingHeaderStyle BackColor="#007DBB" />
        <SortedDescendingCellStyle BackColor="#CAC9C9" />
        <SortedDescendingHeaderStyle BackColor="#00547E" />
    </asp:GridView>`

离开我:

empty gridview

我的网格属性是默认属性,除了:

  • AutoGenerateColumns = false

  • AllowPaging = true

  • AllowSorting = true

  • PageSize = 5

如果我打开AutoGenerateColumns,表中的数据会进入自动生成的列 . 但不适用于我手动创建列的时间 . 我正在使用模板字段列类型来手动添加列 . 它们只是文本字段,我找不到更好的选择 .

任何帮助表示...

2 回答

  • 0

    你为什么使用asp:TemplateField?您没有在模板字段中添加任何控件 .

    只需将TemplateField更改为BoundField即可解决您的问题 .

    喜欢:

    <asp:BoundField DataField="Part No" HeaderText="Part No" />
            <asp:BoundField DataField="Qty" HeaderText="Qty" />
            <asp:BoundField DataField="Description" HeaderText="Description" />
            <asp:BoundField DataField="Vendor" HeaderText="Vendor" />
            <asp:BoundField DataField="Vendor Part" HeaderText="Vendor Part" />
            <asp:BoundField DataField="Cost" HeaderText="Cost" />
            <asp:BoundField DataField="PO Number" HeaderText="PO Number" />
            <asp:BoundField DataField="Delivery Date" HeaderText="Delivery Date" />
            <asp:BoundField DataField="Total Cost" HeaderText="Total Cost" />
    
  • 0

    尝试在标签内创建

    <asp:TemplateField HeaderText="Example">
                <ItemTemplate>
                    <%# Eval("TestColumn") %>
                 </ItemTemplate>
     </asp:TemplateField>
    

相关问题