2012-04-11 88 views
0

我有一个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的对象?

谢谢。

回答

0

您的问题 -现在,我有到GridViewRow参考,有可能是我 在我的OrigionalDataSourceObject得到什么?

GridViewDataSource ObjectDisposedPage Life Cycle结束。一旦Page被加载,您可以在Postback期间在Quick Watch中检查它。


您的问题 -我知道我可以存储ID诠释他的网格,并用它来回头看看我的 数据库获取数据,但我想避免再次往返于 数据。

Postback期间,您可以选择在ViewState/Session之间保存数据。如果只是将数据保留在同一页面中,则只应考虑ViewState


您的问题 -但我想是这样的:

VAR odsMyobject = row.DataItem为MyCustomObject;

您可以使用GridViewDataKeys,你可以很容易地使用您已使用NamingContainer已经计算了RowIndex访问它。另一种选择/替代方法是隐藏控制,并使用Property将其与对齐,并访问此控件,如下所示。

((ControlType)row.FindControl("ControlID")). 
+0

谢谢。我误解了DataSource对象会存在多长时间。 – Steve 2012-04-11 17:12:36

相关问题