从网格视图中获取基础对象数据源
本文关键字:对象 数据源 获取 网格 视图 | 更新日期: 2023-09-27 18:30:53
我有一个绑定到ObjectDataSource的网格视图,其中包括一个用于选择网格中项目的复选框。
在CheckChanged事件中,我有一些这样的代码:
//Clear the existing selected row
foreach (GridViewRow oldrow in uxRaceList.Rows)
{
var otherOpt = (RadioButton)oldrow.FindControl("rdbRaceNum");
if (otherOpt != sender)
otherOpt.Checked = false;
}
//Set the new selected row
RadioButton rb = (RadioButton)sender;
GridViewRow row = (GridViewRow)rb.NamingContainer;
((RadioButton)row.FindControl("rdbRaceNum")).Checked = true;
现在我有了对 GridViewRow 的引用,我是否可以访问我的 OrigionalDataSourceObject?
我知道我可以得到腰带中显示的数据:
_selectedRaceNum = Convert.ToInt32(rb.Text.Substring(0, 1));
但我想要这样的东西:
var odsMyobject = row.数据项作为我的自定义对象;
我知道我可以在网格中存储一个 ID,并使用它来回顾我的数据库以获取数据,但我想避免再次往返数据。
也许我可以以某种方式向对象数据源询问对象?
谢谢。
您的问题 - 现在我有对 GridViewrow 的引用,我可以吗 获取我的 OrigionalDataSourceObject?
你GridView
DataSource Object
将在Page Life Cycle
结束时Disposed
。您可以在Postback
Quick Watch
中检查它,一旦Page
加载完毕。
您的问题 - 我知道我可以在网格中存储一个 ID 并使用它来回顾我的 数据库以获取数据,但我想避免再次往返 数据。
您可以选择在Postback
期间将数据保留在ViewState
/Session
中。如果只是将数据保留在同一页面中,则只应考虑ViewState
。
你的问题 - 但我想要这样的东西:
var odsMyobject = row.数据项作为我的自定义对象;
您可以在GridView
中使用DataKeys
,并且可以使用已经使用NamingContainer
计算的RowIndex
轻松访问它。另一个选项/替代方案是隐藏控件并用您的Property
Bind
它并访问此控件,如下所示。
((ControlType)row.FindControl("ControlID")).
我可能误解了您的问题,但是如果您希望将数据对象绑定到该特定的 GridViewRow,您应该能够使用 DataItem 属性来获取它。
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridviewrow.dataitem.aspx
获取 GridViewRow 对象所在的基础数据对象 绑定。