我有一个使用母版页的asp页面。我在页面上创建了一些面板,在我的代码隐藏页面上调用[Webmethod]的AJAX。这是页面本身的结构......
<form runat="server" class="form-horizontal" id="frm_estRequest">
<div id="mainContent" runat="server" >
<div id="contentInner" runat="server>
<asp:Panel id="comp_list" runat="server"></asp:Panel>
</div>
</div>
</form>
我通过webmethod将动态创建的控件添加到“comp_list”面板。这是在webmethod中创建的html ...
Panel component = new Panel();
component.ID = "comp" + compNumber;
component.Controls.Add(new LiteralControl("<input type='hidden' value='" +
compType + "' ID='compType_" + compNumber + "'/>"));
所以我想要做的就是从Html Hiddenfield中获取价值。这就是我必须做的事情(由于某种原因这不起作用)。
ContentPlaceHolder cph =(ContentPlaceHolder)this.Master.FindControl("placeholder_content");
Control compList = (Control)cph.FindControl("frm_estRequest").FindControl("mainContent").FindControl("contentInner").FindControl("comp_list");
Control ct = (Control) compList.FindControl("comp" + i.ToString());
HiddenField compType = (HiddenField)ct.FindControl("compType_" + i.ToString());
我能够获得“comp_list”控件,但这是我能得到的。它一直说ct是null。仅供参考,我只是一个用于跟踪已添加到页面的控件的计数器。我唯一的想法是,也许我应该使用clientID。对此的任何帮助将不胜感激。
控件呈现为html,然后通过ajax返回到页面,然后像这样添加到div中......
System.Text.StringBuilder sb = new System.Text.StringBuilder();
System.IO.StringWriter tw = new System.IO.StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);
component.RenderControl(hw);
return sb.ToString();
var req = $.ajax({
type: "POST",
url: "EstRequest.aspx/createComponent",
data: params,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$('#<%= comp_list.ClientID%>').append(data.d)
document.getElementById('<%= compNumber.ClientID %>').value = comp + 1;
$("#<%= compNumber.ClientID %>").live("click", function() {
$(this).next().slideToggle("fast")});
},
error: function (response) { debugger; alert("Error: " + params); },
failure: function (response) {
alert(response.d);
}
})
答案 0 :(得分:0)
`面板组件=新面板(); component.ID =“comp”+ compNumber; component.Controls.Add(new LiteralControl(“”));
//在这里添加一行
comp_list.Add(组分);`
现在尝试它应该可以工作。