在网格中绑定会话数据

本文关键字:会话 数据 绑定 网格 | 更新日期: 2023-09-27 18:25:26

我正在尝试在网格中加载会话数据,但没有加载任何数据,我的代码是

protected void imageAddExtraField_Click(object sender, ImageClickEventArgs e)
    {
        List<ContentInfo> lstExtraFields = new List<ContentInfo>();
        if (Session["ExtraField"] != null)
        {
            lstExtraFields = Session["ExtraField"] as List<ContentInfo>;
        }
        else
        {
            ContentInfo obj = new ContentInfo();
            obj.ExtraFieldValue = ckEditorExtraField.Text;
            obj.ExtraField = ddlExtraField.SelectedItem.ToString();
            lstExtraFields.Add(obj);
            gdvExtraField.DataSource = lstExtraFields;
            gdvExtraField.DataBind();
            Session["ExtraField"] = lstExtraFields;
        }
    }


我正在使用VS2008任何解决方案,谢谢。

在网格中绑定会话数据

我不确定这是否是你的意图,但当Session["ExtraFiled"]中有什么东西时,imageAddExtraField_Click什么都不做。如果你想添加更多的对象,你可能需要重构一点代码:

protected void imageAddExtraField_Click(object sender, ImageClickEventArgs e)
    {        
        // check if nothing in the session, on success create a new list
        if (Session["ExtraField"] == null)
        {
            Session["ExtraField"] = new List<ContentInfo>();
        }
        // get a reference to the list in session; previous code ensures is something
        List<ContentInfo> lstExtraFields = (List<ContentInfo>)Session["ExtraField"];
        ContentInfo obj = new ContentInfo();
        obj.ExtraFieldValue = ckEditorExtraField.Text;
        obj.ExtraField = ddlExtraField.SelectedItem.ToString();
        lstExtraFields.Add(obj);
        // bind the grid
        gdvExtraField.DataSource = lstExtraFields;
        gdvExtraField.DataBind();
        // how do you bind when !PostBack?
        }
    }
  1. 确保ExtraField是List对象。2.确保gridview已编程为显示数据(自动生成列或手动生成列)