問題描述:在後台代碼中如果有方法被標記為[AjaxMethod]的ajax方法不能引用到前台的一些控件的值
前台代碼:
html
<head runat="server">
<title>Untitled Page</title>
<script language="javascript" type="text/javascript" src="gridviewTest.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div id="tablegirview">
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
<input type="button" value="獲取" onclick="return HtmlBindToGridViewContainer();" />
</form>
</body> 如前台我們放了一個id為"gridView1"的gridview控件,如果我們在後台方法裏面去引用"gridview1"時,gridview1為空(Null)!
Code
public static string RenderControl(Control _control)
{
StringWriter stringW = new StringWriter();
HtmlTextWriter ht = new HtmlTextWriter(stringW);
_control.RenderControl(ht);
return stringW.ToString();
}
[AjaxMethod]
public string getGridView()
{
//gridview1為空
gridview1.DataSource = GetDataTable();
gridview1.DataBind();
string html = RenderControl(gridview1);
return html;
} 這樣在標記為[ajaxmethod]方法中就可以引用這個gridview1了!,不知道高手有沒有更好的方法呢?
解決方案:
在後台新建一個gridView實例,用來存儲girdview1,然後在page_load事件裏面將girdviwe1傳給它
Code
private static GridView gv = null;
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(gridviewTest));
if (!Page.IsPostBack)
{
gv = GridView1;
}
} 如果碰到Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server
請按照
http://blog.csdn.net/yesefuhua/archive/2008/11/12/3280120.aspx的方法解決