按钮点击无法将数据发送到其他页面?

时间:2017-01-05 14:17:01

标签: javascript jquery asp.net

您好我正在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;
});

有人可以指导我实现这一目标吗?谢谢大家。

1 个答案:

答案 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会处理此问题并阻止其提交。