我正在尝试在所选行中选择列值,但我无法选择该行。似乎在单击要选择的行之后,它不会进入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);
}
}
}
答案 0 :(得分:0)
您是否允许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" />
相关联。
答案 1 :(得分:0)
您可以使用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管理器和面板。