0

我有一个绑定到 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 询问对象?

谢谢。

4

2 回答 2

0

我可能会误解您的问题,但是如果您希望数据对象绑定到该特定 GridViewRow,您应该能够只使用 DataItem 属性来获取它。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridviewrow.dataitem.aspx

获取 GridViewRow 对象绑定到的基础数据对象。

于 2012-04-11T04:06:01.807 回答
0

您的问题 -既然我有对 GridViewRow 的引用,我是否可以访问我的 OrigionalDataSourceObject?

GridView DataSource ObjectDisposedPage Life Cycle. 您可以在Quick Watch加载后Postback检查它。Page


你的问题 -我知道我可以在网格中存储一个 ID 并使用它来回顾我的数据库以获取数据,但我想避免再次往返数据。

您可以选择在ViewState. 如果仅将数据保留在同一页面中,则应仅考虑。SessionPostbackViewState


你的问题 -但我想要类似的东西:

var odsMyobject = row.DataItem as MyCustomObject;

您可以使用DataKeysin并且可以使用您已经计算GridView过的 轻松访问它。另一个选项/替代方案是隐藏控件及其与您的并访问此控件,如下所示。RowIndexNamingContainerBindProperty

((ControlType)row.FindControl("ControlID")).
于 2012-04-11T03:32:20.247 回答