如何在ASPxGridView中按键值或可见索引获取行然后更改列值?

时间:2011-05-11 11:14:17

标签: devexpress aspxgridview

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

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

row["Column1"] = true; 

修改
我要做的是,每次按下按钮我想检查一个特定的行(我使用ajax不重新加载所有页面);

由于

2 个答案:

答案 0 :(得分:3)

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

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

<强>更新

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

答案 1 :(得分: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;
   }
}  

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