我已经介入并调试了我的代码,并且传递给def placenew(request):
if request.method == 'POST':
test = request.POST.get('address')
response_data = {}
if request.is_ajax():
return HttpResponse(
json.dumps(response_data),
content_type="application/json"
)
return render(
request, 'app/placenew.html', {'key':key}
)
else:
print ("not POST")
return render(request, 'app/placenew.html', {'key':key})
方法的ID是我希望得到的培训计划的ID,并且自定义表类名称是正确的(它正在获取正确的自定义表。
但是,返回的项目是自定义表格中的第一个项目(我在数据库中查找)而不是具有输入ID的项目。
GetItem()
无论输入什么整数值,都会返回此无关的自定义表项。我已经通过使用GetItems()方法完成了一项工作 - 但这并不理想,因为我知道我想要哪个CustomTableItem,这个解决方法是一个不必要的循环。
(第7版)
答案 0 :(得分:1)
奇怪,因为你做的似乎是正确的,也许ID不是自定义表中的ItemID。您可以通过查看数据库并使用此ID运行查询来调试它,或使用GetItems()方法检查以查看ItemID是什么。
以下是Kentico 7的更多示例: http://devnet.kentico.com/docs/7_0/devguide/index.html?custom_tables_api_examples_managing_custom_table_data.htm
解决方法可以是GetItems方法,也可以在文档中的示例中完成。如果你使用这个参数,它的性能就不那么重了:
string where = "YourIDColumn = " + id;
int topN = 1;
string columns = "ItemID";
DataSet dataSet = customTableProvider.GetItems(customTableClassName, where, null, topN, columns);
但我同意,如果您拥有GetItem
方法并且您拥有该ID,那就好像很奇怪。
祝您好好调试并找到解决方案。
答案 1 :(得分:1)
您的代码是正确的。
要验证两件事(假设您的ID是您正在查找的自定义表格中的有效ItemID):
CMSContext.CurrentUser
具有读取要查询的自定义表的权限。答案 2 :(得分:0)
试试这个:
int id = parameter.ID;
string where = "YourIdColumn=" + id;
string columns = "TheColumnYouWant"
CustomTableItem provider CustomTableItemProvider.GetItems(customTableClassName,where,null,columns);
var theTrainingPlan = provider["TheColumnNameOfTheValueWant"];
创建CustomTableItem时,它基本上变成了一个属性映射,您可以在其中直接通过键(或列)名称访问值。