0

テキストボックスに入力した値を同じページのグリッドビューに追加したい。これを行うには、ボタンと Event(btn_add_Click) を使用しています。

IF ループを使用してグリッドビューの古いデータをチェックし、それをリストに保持しようとしました。

テキスト ボックスにデータを入力すると、最初に行が追加されます。しかし 2 回目 - Session["dt"] がデータを運ぶとき、セッション変数の型キャストでエラーが発生して IF ループに入ります。

セッションをタイプキャストする方法、または新しい行を追加するときにグリッドビューの古いデータを維持する方法を提案してください。

コード -

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 に答える