今晚我正在玩C#和jQuery UI对话框。我已经向用户管理页面添加了一个对话框div,它将使管理员能够编辑用户信息(例如地址,电话,aspnetdb内容)。当管理员在网格视图中单击某一行时,会激活该对话框,但控件(文本框和下拉列表)需要几秒钟来填充信息。我希望对话框显示用户的信息,允许更改控件,允许管理员保存数据,然后更新更新面板内的网格视图。
是否有一种方法可以通过Code Behind和jQuery仅在Datatable(数据集xsd)填充所有字段后显示对话框?
提前感谢您的帮助。这让我困扰了好几个小时。
答案 0 :(得分:2)
我将采用以下方案:
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" );
}
}
);
更新:以下是如何在对话框的控件中填充数据。我将尝试用一个例子来解释它。
服务器端(方法必须是静态的且具有[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" );
}
});
答案 1 :(得分:1)
如果所有其他方法都失败了,你可以强行说出来:说你的一个字段如下:
<input id='some_field'>
您可以测试是否已填充:
if ($("#some_field").val() !== "")
你可以用计时器反复检查:
var fieldLoaded = setInterval( function() { if ($("#some_field").val() !== "") { clearInterval(fieldLoaded); $("#my_dialog").show(); } }, 100);