C# 如何使用单选按钮选择jqGrid行?
我不需要编辑,只需要一个单选按钮就可以选择(甚至不是多选)行。我还没有找到其他相关的帖子。我已经有了几列数据,但我不知道如何在每个组的第一列中放置一个单选按钮 jqGrid使用一个不可见的列进行渲染——当用户单击按钮时,我想发布一个唯一的ID。这对我来说应该足够了。因此,我还需要能够识别在激发C# 如何使用单选按钮选择jqGrid行?,c#,jqgrid,C#,Jqgrid,我不需要编辑,只需要一个单选按钮就可以选择(甚至不是多选)行。我还没有找到其他相关的帖子。我已经有了几列数据,但我不知道如何在每个组的第一列中放置一个单选按钮 jqGrid使用一个不可见的列进行渲染——当用户单击按钮时,我想发布一个唯一的ID。这对我来说应该足够了。因此,我还需要能够识别在激发$.ajax({…})时选择了哪一行 网站上似乎没有足够的文档让我弄明白。我一直在寻找某种API,但它只适用于PHP。以下是我在模型中生成网格的方式: return new JQGrid {
$.ajax({…})时选择了哪一行代码>
网站上似乎没有足够的文档让我弄明白。我一直在寻找某种API,但它只适用于PHP。以下是我在模型中生成网格的方式:
return new JQGrid
{
Columns = new List<JQGridColumn>()
{
new JQGridColumn
{
DataField = "CallID", //this is the unique ID I need to postback
Visible = false
},
new JQGridColumn
{
DataField = "Name",
HeaderText = "Full Name",
PrimaryKey = false,
Editable = false,
Width = 120
},
new JQGridColumn
{
DataField = "CallStartTime",
HeaderText = "Call Placed On",
PrimaryKey = false,
Editable = false,
Width = 130
}
}
};
但是,ajax post请求数据之间的延迟太长,我猜代码无法执行。当我在模型中查询数据时,我能够装配这个。当我创建网格行然后JSON'ify时,我手动输入单选按钮的HTML,将其值属性设置为模型中的CallID:
var gridrows = from call in calls
select new
{
i = call.CallID,
cell = new string[] {
//call.CallID.ToString(),
"<input type=\"radio\" name=\"selectedCall\" value=\"" + call.CallID + "\" />",
call.Name,
call.CallStartTime.ToString("MM/dd/yyyy hh:mm tt")
}
};
我建议您也这样做,但在客户端。您可以使用在自定义格式化程序函数中构造HTML片段:
{ name: 'CallID', index: 'CallID', width: 50,
formatter:function (cellvalue, options, rowObject) {
return '<input type="radio" name="selectedCall" value="' + cellvalue + '"' />"
}
},
{name:'CallID',index:'CallID',宽度:50,
格式化程序:函数(cellvalue、options、rowObject){
return'我需要一个更简单的解决方案,所以我想出了这个方法,它使用内置的multiselect,而不是向网格中添加col
干杯,我必须测试一下--我想可能有一种方法可以使用自定义格式化程序,但我不知道该如何使用。@David:我只试着在客户端生成与服务器端相同的单选按钮。我不太明白像“
这样的单选按钮如何帮助您。它将看起来像一个ckeckbox。如果您的问题尚未解决,您能否发布一个图片的HTML代码片段,显示您希望在表格单元格中包含的内容。单选按钮通过允许在下一次回发的上下文中选择行来帮助我。在下一次回发中,我收到一个名为selectedCallXXX
where XX的元素X是我需要处理的唯一ID。@David:为什么不直接使用multiselect:true
?
new JQGridColumn
{
DataField = "CallID",
HeaderText = "Select",
Width = 50
},
{ name: 'CallID', index: 'CallID', width: 50,
formatter:function (cellvalue, options, rowObject) {
return '<input type="radio" name="selectedCall" value="' + cellvalue + '"' />"
}
},
multiselect : true, //Must be true to allow for radio button selection
beforeSelectRow: function(rowid, e)
{
// Allow only one selection
$("#myGrid").jqGrid('resetSelection');
return (true);
},
beforeRequest : function() {
//Remove multi-select check box from grid header
$('input[id=cb_myGrid]', 'div[id=jqgh_myGrid_cb]').remove();
},
loadComplete : function () {
//Convert grid check boxes to radio buttons
$('input[id^="jqg_myGrid_"]').attr("type", "radio");
}