我正在尝试在选定的行中选择一个列值,但无法选择该行。似乎在单击要选择的行后,它没有进入if语句。如果将if语句更改为仅带有一个“ =”的(dataItem.Selected = true),它将进入,但返回所有行的发票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中允许多个选择或仅允许单个选择?

对我来说,如果您选择单行,那么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>


但是,如果您希望从客户端触发行选择命令,则应使用JS添加行单击事件。

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


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

关于mysql - 我无法在Telerik radgrid中检索列值。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38300093/

10-12 15:42