从网格视图中获取基础对象数据源

本文关键字:对象 数据源 获取 网格 视图 | 更新日期: 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 对象所在的基础数据对象 绑定。