Telerik RadGrid - 从ItemUpdate事件的列获取值

时间:2014-09-05 12:37:05

标签: c# telerik telerik-grid radgrid

我花了最后几个小时试图解决这个问题,我想这是一个简单的解决方案。 但是我还没有找到解决方案。

在我的网格中使用:

AutoGenerateEditColumn="true"

当我连续按下编辑按钮时,我想在RadGrid1_UpdateCommand事件中进行自定义检查。

<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateEditColumn="true" DataSourceID="ObjectDataSource">

<MasterTableView CommandItemDisplay="Top" AllowAutomaticUpdates="true" DataSourceID="ObjectDataSource" DataKeyNames="Id">
<Columns>

<telerik:GridBoundColumn DataField="Id" DataType="System.Int32" FilterControlAltText="Filter Id column" HeaderText="Id" SortExpression="Id" UniqueName="Id" Display="false" ReadOnly="true">

<telerik:GridBoundColumn DataField="Name" FilterControlAltText="Filter Name column" HeaderText="Name" SortExpression="Name" UniqueName="Name"/>

</Columns>
</MasterTableView>
</telerik:radGrid>

所以在我的后端我就像这样挂钩事件:

protected void RadGrid1_UpdateCommand(object sender, GridCommandEventArgs e) {
// Get the ID for the specific row which had the "Edit" link pressed.
}

我更愿意,如果我能够将ID存储在int中。

int i = e.Somthing.Something.Darkside;

我搜索得很远,没有成功,我希望有人能在这个精彩的星期五来救我。

我很抱歉,如果我没有意义,英语不是我的主要语言,我的思维方式可能会被关闭(看一下3小时应该很简单的事情对你来说不是吗?)。

2 个答案:

答案 0 :(得分:1)

请尝试使用以下代码段。

protected void RadGrid1_UpdateCommand(object sender, GridCommandEventArgs e)
{
    GridEditableItem item = e.Item as GridEditableItem;

    int Id = Convert.ToInt32(item.GetDataKeyValue("Id").ToString());
    //Access edit row ID value here -- using datakey

    string Name = (item["Name"].Controls[0] as TextBox).Text;
    // Get Name field updated value here

    int index = item.ItemIndex;
    // Access edit row index here
}

如果我不理解你的要求,请告诉我。

答案 1 :(得分:0)

RadGrid1_UpdateCommand的事件处理程序中,获取当前项目,然后从那里计算项目的行索引:

GridEditableItem editItem = e.Item as GridEditableItem;
int myIndex = (editItem.RowIndex / 2) - 1;

RowIndex值是2的倍数,基于1(从1开始,而不是0)。因此,通过此计算,您可以获得以下内容(我认为您的期望):

RowIndex    myIndex  
2           0
4           1
6           2
...