我已经创建了
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;
}
}
但添加新数据行后,字段为空,没有任何值。 如果我启用字段的自动生成,我可以查看生成的数据。
我该如何解决这个问题?
答案 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文件中已启用。