簡體   English   中英

ASP.NET:如何從GridView控件的選定行中獲取值

[英]ASP.NET: How to get values from a selected row from GridView control

我在ASP.net網頁上添加了GridView控件,並將其綁定到List<>的數據,列表包含一個簡單自定義對象的集合,該對象定義為:

public class PersonRecord
{
    public int PersonId { get; set; }
    public string Name { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public string Notes { get; set; }
}

我將AutoGenerateSelectButton設置為true,並將事件處理程序附加到SelectedIndexChanged事件。 我可以看到事件處理程序觸發,並且可以使用MyGridView.SelectedIndex獲取選定的行索引。

我的問題是 :如何使用選定的行索引獲取選定記錄的PersonId?

我以為MyGridView.Rows[MyGridView.SelectedIndex].Cells[0]可以做到,但這不是因為MyGridView.Rows.Count為0。

TIA

只是因為我有一段時間沒有使用Web應用程序了,所以我決定看看是否可以復制。 las,無濟於事。 這對我來說很好:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)
        {
            var persons = CreatePersons();
            GridView1.DataSource = persons;
            GridView1.DataBind();
        }
    }

    private List<PersonRecord> CreatePersons()
    {
        var person = new PersonRecord
                         {
                             PersonId = 1,
                             Name = "greg",
                             Title = "Supreme Coder",
                             Description = "Nada",
                             Notes = "foo bar"
                         };

        var person2 = new PersonRecord
        {
            PersonId = 2,
            Name = "Sam",
            Title = "Junior Coder",
            Description = "Nada",
            Notes = "foo bar"
        };

        var list = new List<PersonRecord> {person, person2};

        return list;
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        var row = GridView1.Rows[0];
        var cell = row.Cells[1];
        var value = cell.Text;


    }

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        int index = GridView1.SelectedIndex;
        var row = GridView1.Rows[index];
        var nameCell = row.Cells[2];
        var name = nameCell.Text;

        Label1.Text = name;
    }
}

當您選擇選擇列(cell [0])時,您最有可能失敗,但是我認為您應該從該單元格中得到一些東西(必須使用它)。 這也可能是綁定的錯誤模式。

您如何將GridView中的數據存儲在服務器上(會話,視圖狀態,還是不這樣做?)。 由於具有選定的行索引,因此只需再次獲取數據源。 如果您將其保留在會話中,則只需獲取該會話對象並在用戶選擇的索引處找到該對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM