gridview中缺少数据

时间:2009-01-04 19:53:13

标签: c# asp.net-mvc

我已经创建了

        DataTable dt = new DataTable();

        dt.Columns.Add("Type");
        dt.Columns.Add("Address1");
        dt.Columns.Add("Address2");
        dt.Columns.Add("PostalCode");
        dt.Columns.Add("Country");

        DataRow drow = dt.NewRow();

        drow["Type"] = ddlAddressType.SelectedItem.ToString();
        drow["Address1"] = txtAddress1.Text;
        drow["Address2"] = txtAddress2.Text;
        drow["PostalCode"] = txtPostalCode.Text;
        drow["Country"] = ddlCountry.SelectedItem.ToString();

        dt.Rows.Add(drow);

        Session["Address"] = dt;

尝试使用以下代码将值添加到gridview中:

public void populateAddressGridView()
{
    if (Session["Address"] != null)
    {
        DataTable dt = (DataTable)Session["Address"];

        if ((dt != null) && (dt.Rows.Count > 0))
        {
            AddressGridView.Visible = true;
            AddressGridView.DataSource = dt;
            AddressGridView.DataBind();
        }
        else
        {
            AddressGridView.Visible = false;
        }
    }

但添加新数据行后,字段为空,没有任何值。 如果我启用字段的自动生成,我可以查看生成的数据。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

听起来像你需要设置AutoGenerateColumns =“false”,然后指定要在gridview中显示的列:

<asp:GridView ID="AddressGridView" runat="server" AutoGenerateColumns="false">
<Columns>
    <asp:BoundField HeaderText="Type" DataField="Type" />
    <asp:BoundField HeaderText="Address1" DataField="Address1" />
    <asp:BoundField HeaderText="Address2" DataField="Address2" />
    <asp:BoundField HeaderText="PostalCode" DataField="PostalCode" />
    <asp:BoundField HeaderText="Country" DataField="Country" />
</Columns>
<EmptyDataTemplate>
    No records were found matching your search criteria
</EmptyDataTemplate>
</asp:GridView>

答案 1 :(得分:0)

在GridView的定义中,如果AutoGenerateColumns设置为false,请确保已定义。

答案 2 :(得分:0)

看起来对我来说。在调试时,是否可以确认会话对象是否正确地转换为数据表?演员之后dt是否有行?代码是否转到databind方法?

答案 3 :(得分:0)

是否需要注册

在使用之前,

Global.asax文件中的Session [“Address”]变量???

和赫克托,

确保您的应用程序的会话状态在web.config文件中已启用。