今晚我将使用c#和jQuery UI对话框。我在用户管理页面中添加了一个对话框div,使管理员能够编辑用户信息(如地址、电话、aspnetdb等)。当管理员单击网格视图中的一行时,对话框被激活,但是控件(文本框和下拉框)需要几秒钟的时间来填充信息。我希望对话框能够显示用户的信息,允许对控件进行更改,允许管理员保存数据,然后更新更新面板内的网格视图。
是否有一种方法,通过代码背后和jQuery只显示对话框后,所有的字段已填入数据表(dataset xsd)?
提前感谢你的帮助。
我会选择以下场景:
- 当用户单击网格行时,将通过
jQuery.ajax
发出ajax请求,该请求将根据用户的选择获取适当的数据。 -
jquery.ajax
函数有一个onSuccess
回调函数,用来激活jqueryUI对话框。
例如:
$.ajax({
url: "myUrl.aspx/MethodName",
type: "POST",
data: ({id : my_grid_selected_id}),
success: function(result){
// Do the dialog fields population here.
$( "#myDialog" ).dialog( "open" );
}
}
);
UPDATE:下面是如何在对话框的控件中填充数据。我将试着用一个例子来解释它。
服务器端(方法必须是静态的,并且具有[WebMethod()]
属性)。
public class CustomData
{
public string name;
public int id;
}
[WebMethod()]
public static CustomData ReturnCustomData(int MyID)
{
CustomData MyData = new CustomData();
MyData.name = "Custom name";
MyData.id = MyID;
return MyData;
}
客户端:
$.ajax({
url: "myUrl.aspx/ReturnCustomData",
type: "POST",
data: ({MyID : my_grid_selected_id}),
success: function(result){
$("your_name_textbox_identifier").val(result.name);
$("your_id_textbox_identifier").val(result.id);
$( "#myDialog" ).dialog( "open" );
}
});
要填充下拉列表,请查看http://www.isolutionteam.co.uk/how-to-populate-aspnet-dropdown-list-from-database-by-passing-radio-button-lists-selected-value-as-parameter-with-jquery/
如果以上所有方法都失败了,您可以强制执行:假设您的其中一个字段看起来像:
<input id='some_field'>
你可以测试它是否被填充了:
<>之前If ($("#some_field").val() !== ")之前你可以用计时器反复检查:
<>之前var fieldLoaded = setInterval(function() {If ($("#some_field").val() !== ") {clearInterval (fieldLoaded);$ (" # my_dialog "),告诉();}}, 100);