добавление данных из gridview в переменную сеанса - PullRequest
0 голосов
/ 24 апреля 2011

У меня есть gridView с записями, названием книги и изображением.

Как я могу добавить выбранный индексный заголовок книги и imageUrl соответственно в переменные сеанса после события clickField, чтобы я мог использовать эту информациюна другой странице.

Я думаю, что-то вроде

string title = (string)GridView1.Rows[GridView1.SelectedIndex].DataItem["Title"];
        Session["Title"] = title;
        Response.Redirect("RateBook.aspx");

Приведенный выше код не является правильным.Как мне на самом деле выбрать и отдельный элемент в выбранной строке и добавить его в переменную после события нажатия кнопки?

Reagards

Ответы [ 4 ]

1 голос
/ 24 апреля 2011

Вы должны сделать это в вашем Командном Событии Строки вашего Gridview. как ...

Предположим, ваше CommandName кнопки равно StoreValue , но вы установили все, что угодно

if(e.CommandName == "StoreValue")
{
  GridViewRow row = (GridViewRow)(((Button)e.CommandSource).NamingContainer);
  string title = row.Cells[ColumnIndex].Text;

    Session["Title"] = title;
    Response.Redirect("RateBook.aspx");
}
0 голосов
/ 25 августа 2017

попробуйте это работает для меня

 protected void OnSelectedIndexChanged(object sender, EventArgs e)
            {        
                foreach (GridViewRow row in GridVIew1.Rows)
                {
                    if (row.RowIndex == GridVIew1.SelectedIndex)
                    {
                        row.BackColor = ColorTranslator.FromHtml("#A1DCF2");
                        row.ToolTip = string.Empty;
                    }
                    else
                    {
                        row.BackColor = ColorTranslator.FromHtml("#FFFFFF");
                        row.ToolTip = "Click to select this row.";
                    }
                }
                //suppose your index is in cell[0]//
                Session["Index"] = GridVIew1.SelectedRow.Cells[0].Text;
}

// вы можете получить детали по индексу используя эту сессию //

0 голосов
/ 24 апреля 2011

Ознакомьтесь с полным примером.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="grdTest" runat="server" AutoGenerateColumns="false">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox ID="chkSelect" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Title" HeaderText="Title" />
                <asp:BoundField DataField="Author" HeaderText="Author" />
            </Columns>
        </asp:GridView>
        <asp:Button ID="btnSelect" Text="Select" runat="server" 
            onclick="btnSelect_Click" />
    </div>
    </form>
</body>
</html>




using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            grdTest.DataSource = Book.Books;
            grdTest.DataBind();
        }


    }
    protected void btnSelect_Click(object sender, EventArgs e)
    {
        bool result = false;
        foreach (GridViewRow row in grdTest.Rows)
        {
            result = ((CheckBox)row.FindControl("chkSelect")).Checked;
            if (result)
            {
                Session["Title"] = row.Cells[1].Text;
                Session["Author"] = row.Cells[2].Text;
            }
        }
    }
}

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public static List<Book> Books
    {
        get
        {
            return new List<Book>()
                       {
                           new Book{Title = "Title1",Author = "Author1"},
                           new Book{Title = "Title2",Author = "Author2"},
                           new Book{Title = "Title3",Author = "Author3"},

                       };
        }

    }

}
0 голосов
/ 24 апреля 2011

попробуйте этот код:

string title = GridView1.Rows[GridView1.SelectedIndex].Cells[ColumnIndex].text;
Session["Title"] = title;
Response.Redirect("RateBook.aspx");

заменить параметр "ColumnIndex" номером столбца "Title".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...