[英]how to get gridview focused row values into grid one by one
我有一個主細節網格。當我專注於主網格時,它將顯示信息細節網格。它一次顯示一個焦點一個網格,但希望將先前的數據保留在詳細網格中,並將第二個集中的行數據也保留在網格中它被以前的數據所取代
您可以處理主網格的 SelectedIndexChanged 事件並將所選項目的數據鍵放在單獨的列表中。 之后使用存儲在該列表中的所有主網格數據重新綁定詳細信息網格。
<asp:GridView ID="MasterGridView" runat="server" AutoGenerateColumns="false" Caption="Master"
DataKeyNames="Id">
<Columns>
<asp:CommandField ShowSelectButton="true" SelectText="Select" />
<asp:BoundField HeaderText="Id" DataField="Id" />
<asp:BoundField HeaderText="Name" DataField="Name" />
</Columns>
</asp:GridView>
<hr />
<asp:GridView ID="DetailsGridView" runat="server" AutoGenerateColumns="false"
DataKeyNames="Id" Caption="Details">
<Columns>
<asp:CommandField ShowSelectButton="true" SelectText="Select" />
<asp:BoundField HeaderText="Id" DataField="Id" />
<asp:BoundField HeaderText="Name" DataField="Name" />
<asp:BoundField HeaderText="Age" DataField="Age" />
</Columns>
</asp:GridView>
代碼隱藏:
private List<MyClass> MasterGridViewDataSource
{
get { return Session["MasterGridViewDataSource"] as List<MyClass>; }
set { Session["MasterGridViewDataSource"] = value; }
}
private List<int> SelectedIDs
{
get { return ViewState["SelectedIDs"] as List<int>; }
set { ViewState["SelectedIDs"] = value; }
}
protected void Page_Init(object sender, EventArgs e)
{
MasterGridView.SelectedIndexChanged += MasterGridView_OnSelectedIndexChanged;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var masterGridDataSource = GetMasterGridDataSource();
MasterGridViewDataSource = masterGridDataSource;
MasterGridView.DataSource = masterGridDataSource;
MasterGridView.DataBind();
SelectedIDs = new List<int>();
}
}
private List<MyClass> GetMasterGridDataSource()
{
return (from item in Enumerable.Range(1, 10)
select new MyClass { Id = item, Name = string.Format("Item #{0}", item), Age = item })
.ToList();
}
void MasterGridView_OnSelectedIndexChanged(object sender, EventArgs e)
{
var selectedId = (int)MasterGridView.SelectedDataKey.Value;
if (!SelectedIDs.Contains(selectedId))
SelectedIDs.Add(selectedId);
DetailsGridView.DataSource = (from item in MasterGridViewDataSource
join id in SelectedIDs on item.Id equals id
select item);
DetailsGridView.DataBind();
}
[Serializable]
public class MyClass
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.