从gridview获取底层的ObjectDataSource
我有一个GridView绑定到一个ObjectDataSource,包括一个复选框来选择网格中的一个项目。从gridview获取底层的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.DataItem为MyCustomObject;
我知道我可以在网格中存储一个ID并使用它回顾我的数据库以获取数据,但我希望避免数据的其他往返。
也许我可以以某种方式问ObjectDataSource的对象?
谢谢。
您的问题 -现在,我有到GridViewRow参考,有可能是我 在我的OrigionalDataSourceObject得到什么?
您GridView
DataSource Object
将Disposed
由Page Life Cycle
结束。一旦Page
被加载,您可以在Postback
期间在Quick Watch
中检查它。
您的问题 -我知道我可以存储ID诠释他的网格,并用它来回头看看我的 数据库获取数据,但我想避免再次往返于 数据。
在Postback
期间,您可以选择在ViewState
/Session
之间保存数据。如果只是将数据保留在同一页面中,则只应考虑ViewState
。
您的问题 -但我想是这样的:
VAR odsMyobject = row.DataItem为MyCustomObject;
您可以使用GridView
DataKeys
,你可以很容易地使用您已使用NamingContainer
已经计算了RowIndex
访问它。另一种选择/替代方法是隐藏控制,并使用Property
将其与对齐,并访问此控件,如下所示。
((ControlType)row.FindControl("ControlID")).
我可能会误解你的问题,但如果你想绑定到特定的GridViewRow数据对象,你应该能够只使用DataItem属性得到它。
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridviewrow.dataitem.aspx
获取基础数据对象到该GridViewRow对象是 界。
谢谢。我误解了DataSource对象会存在多长时间。 – Steve 2012-04-11 17:12:36