[英]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.