我有一个在主页上显示jqGrid的C#Web窗体应用程序。我在jqGrid上挣扎了一段时间,因为它在从MediaCapture.StartPreviewToCustomSinkAsync()
继承的任何页面上返回“jqGrid不是函数”错误。
为了解决这个问题,我将网格的代码和脚本引用放在用户控件中,然后引用主页上的控件:
site.master
在<%@ Register TagPrefix="My" TagName="GridControl" Src="~/UserControls/Grid.ascx"%>
<My:GridControl ID ="gridControl" runat="server" />
内部我有代码填充网格,从处理程序内的存储过程中获取数据:
Grid.ascx
我使用处理程序和Newtonsoft JSON.NET来避免json字符串长度错误。
存储过程有11个参数,当设置为NULL时,返回所有行,这就是我想要的初始页面加载。
<script type="text/javascript">
$(function () {
$("#dataGrid").jqGrid({
url: 'Handler1.ashx',
datatype: 'json',
现在,我想根据sqlCmd.Parameters.Add("@ProjNum", SqlDbType.Int).Value = DBNull.Value;
下拉列表中的值过滤结果。下拉列表也是从SQL调用填充的。但我的问题是如何从下拉列表中获取值到我的处理程序中?
我知道我可以做类似网址的内容:Default.aspx
我刚刚对该值进行了硬编码,然后从Handler1.ashx?asgnID=19
获取,但我仍然不知道如何传递该值
我还阅读了有关使用session的内容,并且我尝试在java按钮单击事件中从context.Request.QueryString
传递ajax中的json字符串 - 这不起作用,因为处理程序最终被调用两次。我对这些东西有点绿,并希望有更好的选择。
答案 0 :(得分:0)
如果有人遇到同样的问题,我会做以下事情来解决它:
创建一个从url中提取参数的函数。
function GetParameterValues(param) {
var url = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < url.length; i++) {
var urlparam = url[i].split('=');
if (urlparam[0] == param) {
return urlparam[1];
}
}
}
将参数值分配给变量并在Jqgrid url中使用它:
$(function () {
var id = GetParameterValues('id');
$('#statusGrid').jqGrid({
url: 'Handler2.ashx?id=' + id.toString(),
datatype: 'json',
mtype: 'POST',
colNames: ['Status', 'Status Date', 'Status Time',...
并且,在处理程序内部,从ProcessRequest()
中的上下文中提取idint ProjNum = Convert.ToInt32(context.Request["Id"]);