您好
在ASPxGridView中,有没有办法通过其VisibleIndex或KeyValue获取一行,以便我可以更改其中的任何列值?,我的意思是这样的:
var row = myGrid.SelectRowByKeyValue(myKeyValue);
OR:
var row = myGrid.SelectRowByVisibleIndex(myKeyValue);
row["Column1"] = true;
修改
我要做的是,每次按下按钮我想检查一个特定的行(我使用ajax不重新加载所有页面);
由于
答案 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;
}
}
我可能不是正确的方法,但我无法以另一种方式解决它。