我用ajax根据dropdownlist的选择加载不同的用户控件,用的jq调用后台的方法返回字符串,然后jq把字符串加到某个标签上,但是用户控件的page_load中有初始化的代码,这样的话代码不执行,求大师们帮助
jq代码://加载不同的项目类型控件
function LoadUc(typeID)
{
$.ajax({
type: "POST",
url: "Default.aspx/LoadUserControl",
data: "{'UcID':'"+typeID+"'}",
dataType: "json",
contentType: "application/json",
success:function (data) {
$("#ucpannel").html(data .d);
}
});
}
以下是调用的后台方法 [WebMethod]
public static string LoadUserControl(string UcID)
{
StringBuilder build = new StringBuilder();
HtmlTextWriter htmlWriter = new HtmlTextWriter(new StringWriter(build));
UserControl uc = new UserControl();
Control ctrl = uc.LoadControl("~/Uc/ConventionalInfo.ascx");//加载用户定义控件
htmlWriter.Flush();
string result;
try
{
ctrl.RenderControl(htmlWriter);
}
catch { }
finally
{
htmlWriter.Flush();
result = build.ToString();
}
return result;//返回控件的HTML代码
}
接下来是用户控件的初始化代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Init();
}
}
public void Init()
{
//初始化工程期数
dropPhase.Items.Add(new ListItem ("请选择工程期数","0"));
IList<IMetaDataItem> itemlist =DataNwepdiService .GetMetaTypeItemsByName ("工程期数");
if (itemlist != null)
{
foreach (IMetaDataItem item in itemlist)
{
dropPhase.Items.Add(new ListItem(item.ItemName, item.ItemCode));
}
}
//机组号
DataTable dtnum = new DataTable();
dtnum.Columns.Add("Numbersvalue");
DataRow dr = dtnum.NewRow();
for (int i = 0; i < 11; i++)
{
dr = dtnum.NewRow();
dr["Numbersvalue"] = i.ToString();
dtnum.Rows.Add(dr);
}
dropMachineGroupNum.BindDorpDownList(dtnum, "Numbersvalue", "Numbersvalue");
//单项数
dropSingleItemNum.BindDorpDownList(dtnum, "Numbersvalue", "Numbersvalue");
//服务性质
dropCharater.BindDorpDownList(DataNwepdiService.GetAllChildItemsByTypeName("工程服务性质"), "ItemName", "ItemCode");
//是否涉外 //方案号
for (int i = 1; i <= 11; i++)
{
ListItem rcbi = new ListItem();
rcbi.Text = i.ToString();
rcbi.Value = i.ToString();
dropSchemeCode.Items.Add(rcbi);
}
}
跪求解答
jq代码://加载不同的项目类型控件
function LoadUc(typeID)
{
$.ajax({
type: "POST",
url: "Default.aspx/LoadUserControl",
data: "{'UcID':'"+typeID+"'}",
dataType: "json",
contentType: "application/json",
success:function (data) {
$("#ucpannel").html(data .d);
}
});
}
以下是调用的后台方法 [WebMethod]
public static string LoadUserControl(string UcID)
{
StringBuilder build = new StringBuilder();
HtmlTextWriter htmlWriter = new HtmlTextWriter(new StringWriter(build));
UserControl uc = new UserControl();
Control ctrl = uc.LoadControl("~/Uc/ConventionalInfo.ascx");//加载用户定义控件
htmlWriter.Flush();
string result;
try
{
ctrl.RenderControl(htmlWriter);
}
catch { }
finally
{
htmlWriter.Flush();
result = build.ToString();
}
return result;//返回控件的HTML代码
}
接下来是用户控件的初始化代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Init();
}
}
public void Init()
{
//初始化工程期数
dropPhase.Items.Add(new ListItem ("请选择工程期数","0"));
IList<IMetaDataItem> itemlist =DataNwepdiService .GetMetaTypeItemsByName ("工程期数");
if (itemlist != null)
{
foreach (IMetaDataItem item in itemlist)
{
dropPhase.Items.Add(new ListItem(item.ItemName, item.ItemCode));
}
}
//机组号
DataTable dtnum = new DataTable();
dtnum.Columns.Add("Numbersvalue");
DataRow dr = dtnum.NewRow();
for (int i = 0; i < 11; i++)
{
dr = dtnum.NewRow();
dr["Numbersvalue"] = i.ToString();
dtnum.Rows.Add(dr);
}
dropMachineGroupNum.BindDorpDownList(dtnum, "Numbersvalue", "Numbersvalue");
//单项数
dropSingleItemNum.BindDorpDownList(dtnum, "Numbersvalue", "Numbersvalue");
//服务性质
dropCharater.BindDorpDownList(DataNwepdiService.GetAllChildItemsByTypeName("工程服务性质"), "ItemName", "ItemCode");
//是否涉外 //方案号
for (int i = 1; i <= 11; i++)
{
ListItem rcbi = new ListItem();
rcbi.Text = i.ToString();
rcbi.Value = i.ToString();
dropSchemeCode.Items.Add(rcbi);
}
}
跪求解答
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货