我正在使用JQGRID和代码如下
<script src=”Scripts/jquery-1.11.0.min.js” type=”text/javascript”></script>
<script src=”Scripts/grid.locale-en.js” type=”text/javascript”></script>
<script src=”Scripts/jquery.jqGrid.min.js” type=”text/javascript”></script>
<script src=”Scripts/jquery-ui.min.js” type=”text/javascript”></script>
使用以下参考文件..
<Select>
我能够加载数据并将其从JQGRID保存到SQL数据库,反之亦然。 但是,选择选项(列:门)没有加载任何数据..我试图调试代码并理解dataUrl在编辑行期间没有通过内联导航触发。
函数BindDDInfo背后的代码(返回类型为&#39;字符串&#39;并提到Webmethod和static)以<Option>……</Option>
</Select>
<select>
<option value='1'>Text1</option>
<option value='2'>Test2</option>
<option value='3'>Test3</option>
<option value='4'>TEst5</option>
<option value='5'>TEst6</option>
<option value='6'>Test7</option>
<option value='7'>Test8</option>
<option value='8'>Test9</option>
</select>
格式返回字符串。
Response HTTP/1.1 200 OK
Server ASP.NET Development Server/10.0.0.0
Date Wed, 24 Feb 2016 15:07:16 GMT
X-AspNet-Version 4.0.30319
Cache-Control no-cache, no-store
Pragma no-cache
Expires -1
Content-Type text/html; charset=utf-8
Content-Length 69186
Connection Close
通过F12检查(在IE9中),可以看到响应标题如下
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
响应正文返回data.aspx html页面,不知道出了什么问题。
然后,我在web.config文件中添加了HTTP处理程序
List<Dictionary<string, object>>
现在,dataUrl正在点击webmethod BindDdInfo并弹出警报(&#34; hello&#34;)(来自ajaxSelectOptions),但它不会在editoptions中进行buildSelect。
以下作为回复者返回 {&#34; d&#34;:&#34; \ u003cselect \ u003e \ u003coption value = \ u00271 \ u003eTest1 \ u003c / option \ u003e \ u003c / select \ u003e&#34;}
在建议从BindDDInfo获取JSOn数据之后,我修改了以下代码,
我已经更改了我的webmethod以返回ajaxSelectOptions: { type: ‘POST’,
contentType: ‘application/json; charset=utf-8’,
datatype: ‘json’,
success: function (result) {
alert(JSON.stringify(result));
}
}
和以下代码
{“d”:[{“ID”:1,”Name”:”Test1″},{“ID”:2,”Name”:”Test2″}]}
警报显示如下
dataUrl: “Data.aspx/BindDDInfo”,
buildSelect: function (response) {
var data = typeof response === “string” ? JSON.stringify(response) : response,
s = “<select>”;
s += ‘<option value=”0″>–Select–</option>’;
$.each(data, function () {
s += ‘<option value=”‘ + this.ID + ‘”>’ + this.Name + ‘</option>’;
});
return s + “</select>”;
}
但是,buildSelect没有被击中,
private static Credential authorize() throws Exception
{
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
List<String> scopes = Arrays.asList(BloggerScopes.BLOGGER);
// load client secrets
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(jsonFactory, new InputStreamReader(new FileInputStream(clientId_File)));
// set up authorization code flow
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
httpTransport, jsonFactory, clientSecrets, scopes).build();
// authorize
return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
}
protected void doTest2() throws Exception
{
// Configure the Installed App OAuth2 flow.
Credential credential = authorize();
Blogger blogger = new Blogger.Builder(httpTransport, jsonFactory, credential).setApplicationName(APP_NAME).setHttpRequestInitializer(credential)
.build();
// The request action object.
GetByUrl blogGetByUrlAction = blogger.blogs().getByUrl(BLOG_URL);
// Configure which blog URL to look up.
blogGetByUrlAction.setUrl(BLOG_URL);
// Restrict the result content to just the data we need.
blogGetByUrlAction.setFields("description,name,posts/totalItems,updated");
// This step sends the request to the server.
Blog blog = blogGetByUrlAction.execute();
// Now we can navigate the response.
System.out.println("Name: " + blog.getName());
System.out.println("Description: " + blog.getDescription());
System.out.println("Post Count: " + blog.getPosts().getTotalItems());
System.out.println("Last Updated: " + blog.getUpdated());
}
在buildSelect中尝试了console.log(响应)和alert(响应),但它没有给出任何弹出窗口。
任何人都可以帮助我将数据从数据库中的JQGRID中下载到下拉列表中。
答案 0 :(得分:1)
您的主要问题是“dataUrl
在编辑行期间未通过inlineNav触发”。我在代码中看到许多可以改进的小东西。我想主要的问题是列Name
(门列)中的输入错误。你应该使用
formatter: "select"
而不是
foramtter: "Select"
(应使用formatter
代替foramtter
和"select"
代替"Select"
两个错误:
此外,我会向您推荐一些其他小技巧:
<div id="jqGridDelPager"></div>
,然后使用pager: true
代替pager: "#jqGridDelPager"
。您可以跳过 "#jqGridDelPager"
navGrid
和inlineNav
参数。免费jqGrid自动为寻呼机创建了div,navGrid
和inlineNav
将使用寻呼机。label
属性,在colName
使用其他文本。该选项的正确名称为colNames
,而不是colName
。您可以将文本从label
移至colNames
数组,也可以删除不需要的colName
数组。inlineNav
free jqGrid方法会自动创建导航条,它不存在。因此,您可以删除不需要的navGrid
。ajaxSelectOptions: { cache: false, type: 'POST' }
。您可以改为使用ajaxSelectOptions: { type: 'POST' }
。singleSelectClickMode: "selectonly"
forceClientSorting: true
选项强制对客户端大小的服务器返回的数据进行排序。您只需要添加例如sortname: "Name"
选项,该选项通知jqGrid数据应该排序到哪一列。jsonReader
的值可以减少为jsonReader: {root: "d", repeatitems: false, id: "QGDelId"}
。设置id: "QGDelId"
意味着每个数据项都包含具有唯一值的QGDelId
属性,这应该用作rowid,这一点很重要。onSelectRow
的含义以及lastSelQGDel
变量的目标。我建议你删除回击。inlineEditing
选项允许指定内联编辑方法使用的 common 选项。您更正了代码,例如,在addParams.addRowParams
和editParams
中指定相同的选项(请参阅inlineNav
的选项)。顺便说一句,key: true
在addParams
内而不是addParams.addRowParams
的位置是错误的。在jqGrid的inlineEditing
选项中指定常用选项要好得多。有关详细信息,请参阅the wiki article。$("#jqGridDel").trigger('reloadGrid', [{fromServer: true}]);
而不是
$("#jqGridDel").jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid');