Vb.net Jqgrid:访问代码隐藏中的选定行单元格值

Vb.net Jqgrid:访问代码隐藏中的选定行单元格值,vb.net,jqgrid,Vb.net,Jqgrid,我想访问代码隐藏中选定的行单元格id。我可以通过Ajax调用来实现,但是当我尝试从Jqgrid子网格发送数据时,这是不可能的 以下是次网格代码: subGridRowExpanded:函数subgrid\u id,行\u id{ 调试器; var subgrid_table_id,pager_id;subgrid_table_id=subgrid_id+\t; var selected_row_id=$'tblFormData'.jqGrid'getCell',row_id',Category

我想访问代码隐藏中选定的行单元格id。我可以通过Ajax调用来实现,但是当我尝试从Jqgrid子网格发送数据时,这是不可能的

以下是次网格代码:

subGridRowExpanded:函数subgrid\u id,行\u id{ 调试器; var subgrid_table_id,pager_id;subgrid_table_id=subgrid_id+\t; var selected_row_id=$'tblFormData'.jqGrid'getCell',row_id',Category_id' //寻呼机\u id=p\u+子网格\u表\u id; $+子网格_id.html; $+子网格\u表\u id.jqGrid{ //$tblTest.jqGrid{ url:/Forms.aspx/GetFormsData,//?选定的行id=+选定的行id, 数据:{CategoryDesc:'+选定的行id+'}', 数据类型:json, contentType:application/json;字符集=utf-8, 有一次:是的, 宽度:300, 高度:自动, 寻呼机:tblSubpager, colNames:['FormName','FormPath'], colModel:[ {name:FormName,index:FormName,可编辑:true,格式化程序:'showlink'}, //{name:FormPath,index:FormPath,editable:true,hidden:true}, { 名称:“FormPath”, 索引:“FormPath”, 隐藏:是的, enctype:多部分/表单数据, 是的, edittype:'文件', 编辑规则:{ 是的, 必填项:true }, 表格选项:{ 后缀:'*' } } ], gridview:没错, 自动编码:正确, ajaxGridOptions:{contentType:'application/json;charset=utf-8'}, serializeGridData:函数postData{ 返回JSON.stringifypostData; }, jsonReader:{ 根:函数obj{return obj.d;}, 第页:函数obj{return 1;}, 总计:函数obj{return 1;}, 记录:函数obj{return obj.d.length;} }
}代码中有许多明显的问题。我在下面发布了一些通过阅读代码可以发现的明显问题:

CategoryId是父网格的列吗?$'tblFormData'是父网格吗?在这种情况下,您可以使用$this而不是$'tblFormData'。 您使用pager\u id作为子网格的pager的id,但是为pager\u id赋值的行被注释,并且id未定义。相反,您使用了pager:tblSubpager,这是错误的。 jqGrid没有contentType参数。因此您应该删除它。相反,您已经将ajaxGridOptions参数与contentType一起使用。它是正确的参数。 您使用数据:{CategoryDesc:'+selected_row_id+'}',但服务器代码expect参数的名称为CategoryId,而不是CategoryDesc。顺便说一句,jqGrid在使用数据类型:json时没有数据参数。您的意思应该是postData。正确的用法是使用 postData:{ CategoryId:选定的\u行\u id }
嗨@Oleg,我在期末考试中引用了很多例子,我很困惑,什么都帮不了我。我看到你提到使用postData进行jqgrid调用。但没有任何效果。你能帮我解决这个问题吗。嗨@Oleg,我在下面添加了答案作为我的注释。我知道我的代码中有一些错误。但我花了很多时间来研究它。@Parthhu:您的代码仍然包含我在回答中描述的寻呼机的错误。关于发送参数:您应该将mtype:POST作为附加选项添加到子网格,以使用HTTP POST而不是GET。如果您使用serializeGridData:function postData{return JSON.stringifypostData;},则这是必需的.UseHttpGet:=在这种情况下也需要删除True。或者,您可以删除serializeGridData或使用serializeGridData:function postData{return{CategoryId:JSON.stringifyselected_row_id};}而不使用任何postData。@Parthhu:无论如何,如果您需要将数据发布到WebMetod,您应该像JSON.stringify一样对数据进行编码{CategoryId:selected_row_id}。如果需要使用HTTP GET,则需要使用{CategoryId:JSON.stringifyselected_row_id}。在某些情况下,这取决于所选_row_id的类型,例如它是否是整数JSON。stringifyselected_row_id与所选_row_id相同。在这种情况下,您可以只使用{CategoryId:selected_row_id}是的,奥列格,这是绝对的 t是一个简单的整数,我已经按照你说的做了尝试。我添加了Stringify和all。不知道它是不是击中反正。它仅包含1作为值。您已将CategoryId声明为字符串,因此它不是整数。您应该使用{CategoryId:JSON.stringifyselected\u row\u id}。如果您将CategoryId声明为整数,那么{CategoryId:selected_row_id}{CategoryId:1}也将起作用。您是否像我之前描述的那样尝试使用HTTPPOST?这是WebMethod的标准方法。我建议您使用IE/Chrome的开发工具或查看HTTP流量。这有助于理解您向服务器发送的内容。