1


在 ASPxGridView 中,有没有办法通过其 VisibleIndex 或 KeyValue 获取一行,以便我可以更改其中的任何列值?,我的意思是这样的:

var row = myGrid.SelectRowByKeyValue(myKeyValue);
OR:
var row = myGrid.SelectRowByVisibleIndex(myKeyValue);  

row["Column1"] = true; 

编辑:
我想做的是,每次我点击按钮时,我都想检查一个特定的行(我使用 ajax 来不重新加载所有页面);

谢谢

4

2 回答 2

3

这可以使用ASPxGridView.GetRow()方法来完成。注意,仅更改 DataRow 中的值是不够的。如果您希望保留这些更改,请将它们保存到数据库中。

由于您使用的是未绑定的列,因此您应该处理 CustomUnboundColumnData 事件并在此事件处理程序中为该行提供修改后的数据。为未绑定列提供数据主题中描述了常用方法。如果这没有帮助,请更详细地描述。

更新

你的方法不正确。ASPxGridView 不提供设置某个单元格 (TD) 的文本的方法。相反,您应该强制网格引发 CustomUnboundColumnData 事件。这可以使用 ASPxGridView 的 DataBind 方法来完成。在此事件处理程序中,您应该确定已处理行的 KeyField 值,将其与单击按钮所在行的 keyField 值进行比较并返回所需的值。这就是我将如何实现此功能...

于 2011-05-11T11:40:09.407 回答
2

我通过使用以下代码解决了它:

for (int i = 0; i < myGridView.VisibleRowCount; i++)
{
 if ( [My condition] )
   {
     (
       (CheckBox)myGridView
         .FindRowCellTemplateControl(i,
                                     myGridView.Columns["MyColumnName"] as GridViewDataColumn,
                                     "My_Unbound_Control_Name"
                                    )
     ).Checked = true;
   }
}  

我可能不是正确的方法,但我无法以另一种方式解决它。

于 2011-05-12T14:08:12.813 回答