将gridview特定的行数据传递给asp.net中的另一个页面?

时间:2012-10-12 10:56:53

标签: asp.net

我想在登录页面中设置会话,并希望将一页girdview数据传递到另一个页面。

slno  title     author    publication    takenby
  1    book1    author1   pub1           sendrequest (button)

上图显示了gridview。当我点击“请求书”按钮(第一个)时。它将重定向到sendrequest.aspx页面。并且必须带上那行数据(即)

slno=1
title=book1
Author=author1
publication=publ

我试过下面的代码 user.aspx.cs

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                string user = (string)(Session["User"]);
                if (e.CommandName.Equals("SendRequestCmd"))
                {
                    if (user == null)
                    {
                        Session["slno"] = null;
                        Session["bookname"] = null;
                        var clickedRow = ((Button)e.CommandSource).NamingContainer as GridViewRow;
                        // now access the cells like this
                        SlNo = clickedRow.Cells[0].Text;
                        Session["slno"] = SlNo.ToString();
                        BookName = clickedRow.Cells[1].Text;
                        Session["bookname"] = BookName.ToString();
                    }
                }
            }

sendquest.aspx.cs

protected void Page_Load(object sender, EventArgs e)
        {
            string slno = "", bookname = "";
            slno = (string)(Session["slno"]);
            bookname = (string)(Session["bookname"]);
            if (slno == null || bookname == null)
            {
                Response.Write("serial no: " + slno + "\nbookname: " + bookname);
            }
        }
        protected void Logout()
        {
            Session.Clear();
        }

但是我的错误

slno=(string)(Session["slno"]);
bookname=(string)(Session["bookname"]);

为什么呢?有谁纠正了吗? 否则说更好的方式?

2 个答案:

答案 0 :(得分:0)

如果不发布错误,很难看出问题所在。您可以检查应用程序中是否启用了会话。

另一种方法(可能更好)是将id / slno(通过QueryString)传递到另一个页面,然后执行查找以在该阶段获取数据。

答案 1 :(得分:0)

我一定会为预订创建一个类型(Class)

具有slno title author publication属性和

public class Booking
{
    public Booking()
    {
        //
        // TODO: Add constructor logic here
        //
    }
    public int slno { get; set; }
    public string Title { get; set; }
    public string author { get; set; }
    public string publication { get; set; }

}

设置预订类型对象的所有属性,并在会话中传递该对象

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        string user = (string)(Session["User"]);
        if (e.CommandName.Equals("SendRequestCmd"))
        {
            if (user == null)
            {
                Booking b = new Booking();
                b.slno = clickedRow.Cells[0].Text;
                b.Title = BookName.ToString();

                Session["Booing"] = b;

            }
        }
    }

并且在接收端只是会话值再次进入该对象的情况 并使用带有对象名称的点访问每个属性。

   Booking b=(Booking)Session["Booking"]
       int slno=b.slno;
    string Title=b.Title;

如果没有发布错误无法给出建议或更正,我的答案就是如何使用会话从一个页面传递到另一个页面。

谢谢