您好我正在sharepoint开发一个asp.net javascript应用程序。共有2页。第一页是default.aspx。我有一个带编辑按钮的gridview。每当我点击编辑按钮,我想重定向到addnewitem.aspx页面。每当我点击编辑时,我想将查询字符串中的当前行数据发送到addnewitem.aspx。我正在尝试如下。但是我的页面令人耳目一新,并没有被重新定向到addnewitem.aspx
以下是我的gridview代码。我正在获取数据。
function readAll() {
var clientContext;
clientContext = SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('Requisition');
var query = new SP.CamlQuery();
query.set_viewXml('<View><RowLimit></RowLimit>10</View>');
var items = oList.getItems(query);
clientContext.load(oList);
clientContext.load(items);
var table = $("#addtable");
var innerHtml = "<tr><th>ID</th><th>Title</th><th>PrimarySkills</th><th>SecondarySkills</th><th>Vacanies</th><th>JobSummary</th><th>JobDescription</th><th>Experience_x0028_Yrs_x0029_</th><th>Qualification</th><th>m</th><th>Customer</th><th>RecievedDate</th><th>TargetDate</th><th>Comments1</th><th>Division</th><th>Actions</th></tr>";
clientContext.executeQueryAsync(
Function.createDelegate(this, function () {
var itemInfo = '';
var enumerator = items.getEnumerator();
while (enumerator.moveNext()) {
var currentListItem = enumerator.get_current();
innerHtml += "<tr><td>" + currentListItem.get_item('ID') + "</td><td>" + currentListItem.get_item('Title') + "</td><td>" + currentListItem.get_item('PrimarySkills') + "</td><td>" + currentListItem.get_item('SecondarySkills') +"</td><td scope='col'><button class='btn btn-primary btn-cons blue' id='Edit'>Edit</button></td></tr>";
}
table.html(innerHtml);
}),
Function.createDelegate(this, fail)
);
function success() {
$("#dvMessage").text("Operation Completed Successfully");
}
function fail() {
$("#dvMessage").text("Operation failed " + arguments[1].get_message());
}
}
在上面的代码中,我的编辑按钮重新加载。我想重定向到其他页面。这不会发生。 document.location.href = url;这是重定向的正确方法吗?
这是我的编辑按钮代码。
$('#addtable td:nth-child(4)').bind('click', function () {
alert("Clicked");
var Title = $(this).closest("tr").children().eq(0).html();
var PrimarySkills = $(this).closest("tr").children().eq(1).html();
var SecondarySkills = $(this).closest("tr").children().eq(2).html();
var url = 'http://sites/APPSTEST/JobRequisitionApp/Pages/AddNewItem.aspx?Title=' + encodeURIComponent(Title) + 'PrimarySkills=' + encodeURIComponent(PrimarySkills) + 'SecondarySkills=' + encodeURIComponent(SecondarySkills);
document.location.href = url;
});
有人可以指导我实现这一目标吗?谢谢大家。
答案 0 :(得分:0)
您的问题是您点击了行上的button
,但您的绑定/处理程序是针对td
<button class='btn btn-primary btn-cons blue' id='Edit'>Edit</button>
默认情况下,没有类型的按钮与<button type='submit'..
相同,因此每次单击该按钮时,它都会提交您的表单(所有SharePoint页面都包含该表单),因此您将获得回发/刷新。
一个简单的选择是删除html构建的<button>
部分并替换为一些纯文本,即<td>edit</td>
这应该触发你的绑定。但是,这不是很整洁。
将按钮更改为按钮
<button type='button' class='btn btn-primary btn-cons blue' id='Edit'>Edit</button>
并将处理程序更改为按钮上的触发器:
$('#addtable td:nth-child(5) button').bind(
NB:第n个孩子应该是5,因为第5列是带按钮的那个
在将其更改为触发按钮后,您也可以从处理程序中return false
,但更改为type=button
会处理此问题并阻止其提交。