我有一个绑定到ObjectDataSource的gridview,包括一个复选框,用于选择网格中的项目。
在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 as MyCustomObject;
我知道我可以在网格中存储一个ID并使用它来回顾我的数据库以获取数据,但我想避免再次往返数据。
也许我可以以某种方式向ObjectDataSource询问对象?
感谢。
答案 0 :(得分:0)
你的问题 - 既然我有对GridViewRow的引用,对我来说是否可能 得到我的OrigionalDataSourceObject?
GridView
结束时DataSource Object
Disposed
为Page Life Cycle
。加载Quick Watch
后,您可以在Postback
期间通过Page
进行检查。
你的问题 - 我知道我可以在网格中存储一个ID并使用它来回顾我的 数据库获取数据,但我想避免另一次往返 数据
您可以选择在ViewState
期间将数据保存在Session
/ Postback
中。如果只是将数据保存在同一页面中,则只应考虑ViewState
。
你的问题 - 但我想要的是:
var odsMyobject = row.DataItem as MyCustomObject;
您可以在DataKeys
中使用GridView
,然后您可以使用已使用RowIndex
计算的NamingContainer
轻松访问该Bind
。另一个选项/备选方案是隐藏控件并Property
与您的((ControlType)row.FindControl("ControlID")).
和访问此控件,如下所示。
{{1}}
答案 1 :(得分:0)
我可能会误解你的问题,但是如果你想将数据对象绑定到特定的GridViewRow,你应该能够使用DataItem属性来获取它。
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridviewrow.dataitem.aspx
获取GridViewRow对象所在的基础数据对象 界。