0

我想将文本框中输入的值添加到同一页面上的网格视图中。我正在使用一个按钮和 Event(btn_add_Click) 来执行此操作。

我使用了一个 IF 循环来检查 gridview 的旧数据,并尝试在 List 中维护它。

当我在文本框中输入数据时 - 第一次添加该行。但是第二次 - 当 Session["dt"] 携带数据时,它会在会话变量的类型转换中进入 IF 循环错误。

请建议如何键入会话 - 或在添加新行时如何维护 gridview 的旧数据。

代码 -

protected void btn_add_Click(object sender, EventArgs e)
    {
        List<Member> lstMember = new List<Member>();
        if (Session["dt"] != null)
        {
            lstMember = (List<Member>)Session["dt"];
        }
        Member Member = new Member();

    Member.Name = txt_NameMember.Text;
    Member.Mobile = txt_MobileMem.Text;
    Member.Email = txt_EmailMem.Text;
    Member.Degree = txt_degreeMem.Text;
    Member.Nationality = txt_NatMem.Text;
    Member.Skills = txt_SkillsMem.Text;
    lstMember.Add(new Member(Member));
    gv_memDetails.DataSource = lstMember;
    gv_memDetails.DataBind();
    Session["dt"] = lstMember;
}

public class Member
{
    public Member() { }
    public Member(Member cust)
    {

        Name = cust.Name;
        Mobile = cust.Mobile;
        Email = cust.Email;
        Degree = cust.Degree;
        Nationality = cust.Nationality;
        Skills = cust.Skills;
    }
    public string Name { get; set; }
    public string Mobile { get; set; }
    public string Email { get; set; }
    public string Degree { get; set; }
    public string Nationality { get; set; }
    public string Skills { get; set; }

}

我检查了这个链接 - 它具有相同的类型转换。但是我的代码中出现错误。

将新行数据添加到gridview asp.net c#


_我的目标是通过从文本框中获取值来为 GridView 添加一行……无论如何,请提出建议……可能是一个新的……

4

2 回答 2

1

将 [Serializable] 放在类名之前:

[Serializable]
public class Member
{ ... }

然后替换

Session["dt"]

ViewState["dt"]
于 2013-10-27T10:42:17.927 回答
0

你得到的错误是什么?确保您没有在回发中重置会话。尝试检查您的会话是否是您的班级列表:例如:

var data=Session["dt"];
if(data is List<Member>)
{
//your code here
}
于 2013-10-27T08:19:58.540 回答