ASP.NET WinForms C#-如何使用在JQGrid中编辑的值更新标签

ASP.NET WinForms C#-如何使用在JQGrid中编辑的值更新标签,c#,asp.net,jqgrid,C#,Asp.net,Jqgrid,我有一个页面,JQGrid绑定到SqlDataSource1,标签绑定到SqlDataSource2。两个SqlDataSources都是从同一个表中选择的,第一个选择所有记录,第二个只返回一条在JQGrid中选择的记录。标签的文本属性绑定到该记录中一个字段的值。一切正常,但当我单击JQGrid中的编辑按钮并在打开的对话框中编辑所选记录时,对话框关闭后,我也想更新标签中的编辑值。但JQGrid事件RowEdited不会导致回发。请帮我解决这个问题。我不认为行编辑事件是编辑行文档的一部分,但您可以

我有一个页面,JQGrid绑定到SqlDataSource1,标签绑定到SqlDataSource2。两个SqlDataSources都是从同一个表中选择的,第一个选择所有记录,第二个只返回一条在JQGrid中选择的记录。标签的文本属性绑定到该记录中一个字段的值。一切正常,但当我单击JQGrid中的编辑按钮并在打开的对话框中编辑所选记录时,对话框关闭后,我也想更新标签中的编辑值。但JQGrid事件RowEdited不会导致回发。请帮我解决这个问题。

我不认为行编辑事件是编辑行文档的一部分,但您可以调用其他事件来更新标签

我突然想到的是aftersavefunction调用,您可以在不必调用服务器来更新标签的情况下设置值

如果您想使用表单编辑,那么您可以在完成调用的
后绑定
功能来更新标签。这特别好,因为在更改标签之前,您可以肯定地确认您的编辑已保存为
afterComplete
函数的一部分


我不认为行编辑事件是编辑行文档的一部分,但您可以调用其他事件来更新标签

我突然想到的是aftersavefunction调用,您可以在不必调用服务器来更新标签的情况下设置值

如果您想使用表单编辑,那么您可以在完成调用的
后绑定
功能来更新标签。这特别好,因为在更改标签之前,您可以肯定地确认您的编辑已保存为
afterComplete
函数的一部分


在@Mark的帮助下,我解决了这个问题,下面是我用来处理JQGrid的LoadComplete客户端事件的JavaScript(jquery)函数示例:

<script type="text/javascript">
    function LoadComplete(data) {
        if (data == null) return;
        var selectedRowId = '<%=(Session["SelectedRow"] == null)?string.Empty:Session["SelectedRow"].ToString()%>';
        if (selectedRowId == '') return;
        var rows = $.map(data.rows, function (value) {
            return (value.id == selectedRowId) ? value : null;
        });
        var selectedRow = rows[0];
        var id = selectedRow.cell[0];
        var name = selectedRow.cell[1];
        var surname = selectedRow.cell[2];
        $('#<%= this.lblName.ClientID %>').html(name);
        $('#<%= this.lblSurname.ClientID %>').html(surname);
    }
</script>

函数加载完成(数据){
if(data==null)返回;
var selectedRowId='';
如果(selectedRowId='')返回;
变量行=$.map(data.rows,函数(值){
返回值(value.id==selectedRowId)?值:空;
});
var selectedRow=行[0];
var id=selectedRow.cell[0];
var name=selectedRow.cell[1];
变量姓氏=selectedRow.cell[2];
$('#').html(名称);
$('#').html(姓氏);
}

在@Mark的帮助下,我解决了这个问题,下面是我用来处理JQGrid的LoadComplete客户端事件的JavaScript(jquery)函数示例:

<script type="text/javascript">
    function LoadComplete(data) {
        if (data == null) return;
        var selectedRowId = '<%=(Session["SelectedRow"] == null)?string.Empty:Session["SelectedRow"].ToString()%>';
        if (selectedRowId == '') return;
        var rows = $.map(data.rows, function (value) {
            return (value.id == selectedRowId) ? value : null;
        });
        var selectedRow = rows[0];
        var id = selectedRow.cell[0];
        var name = selectedRow.cell[1];
        var surname = selectedRow.cell[2];
        $('#<%= this.lblName.ClientID %>').html(name);
        $('#<%= this.lblSurname.ClientID %>').html(surname);
    }
</script>

函数加载完成(数据){
if(data==null)返回;
var selectedRowId='';
如果(selectedRowId='')返回;
变量行=$.map(data.rows,函数(值){
返回值(value.id==selectedRowId)?值:空;
});
var selectedRow=行[0];
var id=selectedRow.cell[0];
var name=selectedRow.cell[1];
变量姓氏=selectedRow.cell[2];
$('#').html(名称);
$('#').html(姓氏);
}

Cool,但是等等,你打算如何通过服务器端事件进行回发?这是我的主要问题。我不知道怎么做。我会在客户端更新标签,但我不知道编辑对话框关闭后会触发什么事件。也许我有误解,但无法从服务器端事件触发更新,客户端必须启动调用。我想您会发现afterComplete将满足您的需要,在发生保存事件后触发标签更新,并且您已向函数返回肯定的保存确认响应。是的,我也找到了,但我在javascript方面很弱。你能为那个事件写一些javascript函数的超级简单的例子吗?我只需要从编辑过的行中按他的名字获取一个字段的值。凭空写是很困难的,如果你在设置网格和标签元素的地方发布代码,这可能是可行的。您可能很容易找到一些
afterComplete
函数的示例。很酷,但是等等,您打算如何通过服务器端事件进行回发?这是我的主要问题。我不知道怎么做。我会在客户端更新标签,但我不知道编辑对话框关闭后会触发什么事件。也许我有误解,但无法从服务器端事件触发更新,客户端必须启动调用。我想您会发现afterComplete将满足您的需要,在发生保存事件后触发标签更新,并且您已向函数返回肯定的保存确认响应。是的,我也找到了,但我在javascript方面很弱。你能为那个事件写一些javascript函数的超级简单的例子吗?我只需要从编辑过的行中按他的名字获取一个字段的值。凭空写是很困难的,如果你在设置网格和标签元素的地方发布代码,这可能是可行的。您可能很容易找到
afterComplete
函数的一些示例。