Asp.net 为什么updatepanel中的yui数据表在回发后消失?
我在一个Asp.net 为什么updatepanel中的yui数据表在回发后消失?,asp.net,updatepanel,yui,postback,yui-datatable,Asp.net,Updatepanel,Yui,Postback,Yui Datatable,我在一个updatepanel中用json数据源呈现了我的YUI数据表。。。如果单击该updatepanel中的按钮,则会导致回发,并且我的yui数据表将消失 为什么updatepanel中的yui数据表在回发后消失 编辑: function EmployeeDatatable(HfJsonValue){ var myColumnDefs = [ {key:"Identity_No", label:"Id", width:50, sortable:t
updatepanel
中用json数据源呈现了我的YUI数据表。。。如果单击该updatepanel中的按钮,则会导致回发
,并且我的yui数据表将消失
- 为什么updatepanel中的yui数据表在回发后消失
编辑:
function EmployeeDatatable(HfJsonValue){
var myColumnDefs = [
{key:"Identity_No", label:"Id", width:50, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
{key:"Emp_Name", label:"EmployeeName", width:150, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
{key:"Address", label:"Address", width:200, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
{key:"Desig_Name", label:"Category", width:200, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
{key:"", formatter:"checkbox"}
];
var jsonObj=eval('(' + HfJsonValue + ')');
var target = "datatable";
var hfId = "ctl00_ContentPlaceHolder1_HfId";
generateDatatable(target,jsonObj,myColumnDefs,hfId)
}
function generateDatatable(target,jsonObj,myColumnDefs,hfId){
var root;
for(key in jsonObj){
root = key; break;
}
var rootId = "id";
if(jsonObj[root].length>0){
for(key in jsonObj[root][0]){
rootId = key; break;
}
}
YAHOO.example.DynamicData = function() {
var myPaginator = new YAHOO.widget.Paginator({
rowsPerPage: 10,
template: YAHOO.widget.Paginator.TEMPLATE_ROWS_PER_PAGE,
rowsPerPageOptions: [10,25,50,100],
pageLinks: 10 });
// DataSource instance
var myDataSource = new YAHOO.util.DataSource(jsonObj);
myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
myDataSource.responseSchema = {resultsList: root,fields:new Array()};
myDataSource.responseSchema.fields[0]=rootId;
for(var i=0;i<myColumnDefs.length;i++){
myDataSource.responseSchema.fields[i+1] = myColumnDefs[i].key;
}
// DataTable configuration
var myConfigs = {
sortedBy : {key:myDataSource.responseSchema.fields[1], dir:YAHOO.widget.DataTable.CLASS_ASC}, // Sets UI initial sort arrow
paginator : myPaginator
};
// DataTable instance
var myDataTable = new YAHOO.widget.DataTable(target, myColumnDefs, myDataSource, myConfigs);
myDataTable.subscribe("rowMouseoverEvent", myDataTable.onEventHighlightRow);
myDataTable.subscribe("rowMouseoutEvent", myDataTable.onEventUnhighlightRow);
myDataTable.subscribe("rowClickEvent", myDataTable.onEventSelectRow);
myDataTable.subscribe("checkboxClickEvent", function(oArgs){
var hidObj = document.getElementById(hfId);
var elCheckbox = oArgs.target;
var oRecord = this.getRecord(elCheckbox);
var id=oRecord.getData(rootId);
if(elCheckbox.checked){
if(hidObj.value == ""){
hidObj.value = id;
}
else{
hidObj.value += "," + id;
}
}
else{
hidObj.value = removeIdFromArray(""+hfId,id);
}
});
myPaginator.subscribe("changeRequest", function (){
if(document.getElementById(hfId).value != "")
{
if(document.getElementById("ConfirmationPanel").style.display=='block')
{
document.getElementById("ConfirmationPanel").style.display='none';
}
document.getElementById(hfId).value="";
}
return true;
});
myDataTable.handleDataReturnPayload = function(oRequest, oResponse, oPayload) {
oPayload.totalRecords = oResponse.meta.totalRecords;
return oPayload;
}
return {
ds: myDataSource,
dt: myDataTable
};
}();
}
我在每次发帖后再次呈现YUI数据表,这不是表单提交。。。我知道这是个坏习惯。。。
我们能为此做些什么。。。。任何建议
if (!IsPostBack)
{
GetEmployeeView();
}
public void GetEmployeeView()
{
DataTable dt = _employeeController.GetEmployeeView().Tables[0];
HfJsonString.Value = GetJSONString(dt);
Page.ClientScript.RegisterStartupScript(Page.GetType(), "json",
"EmployeeDatatable('" + HfJsonString.Value + "');", true);
}
When i click any button in that page it causes postback and i have to
regenerate YUI Datatable once again with the hiddenfield value containing
json string..
protected void LbCancel_Click(object sender, EventArgs e)
{
HfId.Value = "";
HfDesigId.Value = "";
ScriptManager.RegisterClientScriptBlock(LbCancel, typeof(LinkButton),
"cancel", "EmployeeDatatable('" + HfJsonString.Value + "');, true);
}
我的javascript:
function EmployeeDatatable(HfJsonValue){
var myColumnDefs = [
{key:"Identity_No", label:"Id", width:50, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
{key:"Emp_Name", label:"EmployeeName", width:150, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
{key:"Address", label:"Address", width:200, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
{key:"Desig_Name", label:"Category", width:200, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
{key:"", formatter:"checkbox"}
];
var jsonObj=eval('(' + HfJsonValue + ')');
var target = "datatable";
var hfId = "ctl00_ContentPlaceHolder1_HfId";
generateDatatable(target,jsonObj,myColumnDefs,hfId)
}
function generateDatatable(target,jsonObj,myColumnDefs,hfId){
var root;
for(key in jsonObj){
root = key; break;
}
var rootId = "id";
if(jsonObj[root].length>0){
for(key in jsonObj[root][0]){
rootId = key; break;
}
}
YAHOO.example.DynamicData = function() {
var myPaginator = new YAHOO.widget.Paginator({
rowsPerPage: 10,
template: YAHOO.widget.Paginator.TEMPLATE_ROWS_PER_PAGE,
rowsPerPageOptions: [10,25,50,100],
pageLinks: 10 });
// DataSource instance
var myDataSource = new YAHOO.util.DataSource(jsonObj);
myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
myDataSource.responseSchema = {resultsList: root,fields:new Array()};
myDataSource.responseSchema.fields[0]=rootId;
for(var i=0;i<myColumnDefs.length;i++){
myDataSource.responseSchema.fields[i+1] = myColumnDefs[i].key;
}
// DataTable configuration
var myConfigs = {
sortedBy : {key:myDataSource.responseSchema.fields[1], dir:YAHOO.widget.DataTable.CLASS_ASC}, // Sets UI initial sort arrow
paginator : myPaginator
};
// DataTable instance
var myDataTable = new YAHOO.widget.DataTable(target, myColumnDefs, myDataSource, myConfigs);
myDataTable.subscribe("rowMouseoverEvent", myDataTable.onEventHighlightRow);
myDataTable.subscribe("rowMouseoutEvent", myDataTable.onEventUnhighlightRow);
myDataTable.subscribe("rowClickEvent", myDataTable.onEventSelectRow);
myDataTable.subscribe("checkboxClickEvent", function(oArgs){
var hidObj = document.getElementById(hfId);
var elCheckbox = oArgs.target;
var oRecord = this.getRecord(elCheckbox);
var id=oRecord.getData(rootId);
if(elCheckbox.checked){
if(hidObj.value == ""){
hidObj.value = id;
}
else{
hidObj.value += "," + id;
}
}
else{
hidObj.value = removeIdFromArray(""+hfId,id);
}
});
myPaginator.subscribe("changeRequest", function (){
if(document.getElementById(hfId).value != "")
{
if(document.getElementById("ConfirmationPanel").style.display=='block')
{
document.getElementById("ConfirmationPanel").style.display='none';
}
document.getElementById(hfId).value="";
}
return true;
});
myDataTable.handleDataReturnPayload = function(oRequest, oResponse, oPayload) {
oPayload.totalRecords = oResponse.meta.totalRecords;
return oPayload;
}
return {
ds: myDataSource,
dt: myDataTable
};
}();
}
函数EmployeeDatatable(HfJsonValue){
var myColumnDefs=[
{key:“Identity_No”,label:“Id”,width:50,sortable:true,sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC},
{键:“Emp_Name”,标签:“EmployeeName”,宽度:150,可排序:true,排序选项:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC},
{key:“Address”,label:“Address”,width:200,sortable:true,sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC},
{key:“Desig_Name”,label:“Category”,width:200,sortable:true,sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC},
{键:“”,格式化程序:“复选框”}
];
var jsonObj=eval(“(“+HfJsonValue+”)”);
var target=“datatable”;
var hfId=“ctl00\u内容占位符1\u hfId”;
GenerateDataable(目标、jsonObj、myColumnDefs、hfId)
}
函数generatedatable(target,jsonObj,myColumnDefs,hfId){
变种根;
for(输入jsonObj){
根=键;断开;
}
var rootId=“id”;
if(jsonObj[root].length>0){
for(输入jsonObj[root][0]){
rootId=键;break;
}
}
YAHOO.example.dynamicATA=函数(){
var myPaginator=新的YAHOO.widget.Paginator({
行页码:10,
模板:YAHOO.widget.Paginator.template\u行/u页,
rowsPerPageOptions:[10,25,50100],
页面链接:10});
//数据源实例
var myDataSource=newyahoo.util.DataSource(jsonObj);
myDataSource.responseType=YAHOO.util.DataSource.TYPE_JSON;
myDataSource.responseSchema={resultsList:root,fields:new Array()};
myDataSource.responseSchema.fields[0]=根ID;
对于(var i=0;i您在客户端生成的任何内容都必须在每次页面刷新后(以及在每次部分页面刷新后,如果该部分包含客户端生成的html)重新生成
因为YUI datatable在客户端获取数据,所以每次替换html的该部分时,都必须再次呈现它。
我的问题得到了答案…是我的回发导致了问题,我通过在我的web应用程序中使用启用ajax的WCF服务进行ajax调用解决了问题…现在一切正常了…@Pandiya Chendur如果你发布代码,我可能会帮你。如果可能的话,用它来显示你的应用程序的外观。否则,它会很困难我想是什么happening@Arthur罗纳德现在看到我的编辑。。。