我无法在 Telerik radgrid 中检索列值。

I am unable to retrieve column value in a Telerik radgrid.

我正在尝试select select 行中的列值,但我无法select 该行。好像点击要selected的行后,并没有进入if语句。如果我将 if 语句更改为 (dataItem.Selected = true) 只有一个“=”,它会进入但 returns 所有行的发票 ID。有关如何解决此问题的任何建议?

protected void RadGrid1_SelectedIndexChanged(object sender, EventArgs e)
    {

        var a ="";
        foreach (GridDataItem dataItem in RadGrid1.MasterTableView.Items)
        {
            if (dataItem.Selected == true)
            {

                a = dataItem.GetDataKeyValue("InvoiceId").ToString();
                Response.Write(a);
            }
        }


    }

您的 RadGrid 允许多个 selection 还是只允许一个 selection?

对我来说,如果你做单行 selection,foreach 循环代码块似乎不正确。

protected void RadGrid1_SelectedIndexChanged(object sender, EventArgs e)
{
   // get selected row
   GridDataItem item =(GridDataItem)RadGrid1.SelectedItems[0]; 
}

此外,还有一点是您应该将 EnablePostBackOnRowClick 属性 设置为 true,这样 RadGrid 的 SelectedIndexChanged 事件将在服务器端正确触发。

<ClientSettings Selecting-AllowRowSelect="true" EnablePostBackOnRowClick="true">
</ClientSettings>

但是如果你想从客户端触发行select命令,那么你应该用JS添加一个行点击事件。

function RowClick(sender, eventArgs) {
    sender.get_masterTableView().fireCommand("Select", eventArgs.get_itemIndexHierarchical());
}

然后将该 JS 函数关联到您的 aspx 中的 <ClientEvents OnRowClick="RowClick" />

您可以使用 RadGrid1.SelectedItems[0] 来获取您选择的项目。

protected void RadGrid1_ItemChanged(object sender, EventArgs e) 
{ 
     var myDataItem = RadGrid1.SelectedItems[0] as GridDataItem;   
     if (myDataItem != null)   
     {   
         var name = myDataItem ["InvoiceId"].Text;   
     }   
}

Woodykiddy 是对的。检查您的回发和允许行选择。
如果您正在使用 ajax,请不要忘记 rad Ajax 管理器和面板。