<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DyControl.aspx.cs" Inherits="EMOEP.DyControl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Register Namespace="Ext.Net" Assembly="Ext.Net" TagPrefix="ext" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" language="javascript">
function getNumbyName() {
var x = document.getElementsByName("txt");
var arr = new Array();
for (var i = 0; i < x.length; i++) {
arr[i] = x[i].value;
}
return arr;
}
</script>
</head>
<body>
<form runat="server" method="post">
<ext:ResourceManager runat="server" />
<ext:Panel ID="plTest" runat="server">
</ext:Panel>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;
namespace EMOEP
{
public partial class DyControl : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string[] txt = new string[] {"txt1","txt2","txt3" };
for (int i = 0; i < txt.Length; i++)
{
TextField txtft = new TextField { ID = txt[i], FieldLabel = txt[i], Width = 200, LabelWidth = 50 , Name="txt",Text ="321"};
plTest.Items.Add(txtft);
}
Ext.Net.Button btn1 = new Ext.Net.Button { ID = "btn1", Text = "getValue方法", Width = 100 };
Ext.Net.Button btn2 = new Ext.Net.Button { ID = "btn2", Text = "FindControl方法", Width = 100 };
Ext.Net.Button btn3 = new Ext.Net.Button { ID = "btn3", Text = "RequestForm方法", Width = 100 };
Ext.Net.Button btn4 = new Ext.Net.Button { ID = "btn4", Text = "JS方法", Width = 100 };
//#{控件ID}.getValue()的方法获得控件的值,但是参数不是动态获得
string param = "#{txt1}.getValue(),#{txt2}.getValue(),#{txt3}.getValue()";
btn1.Listeners.Click.Handler = "EX.btnTestClick1("+ param +");";
plTest.Items.Add(btn1);
/*
生成控件的方法(注意:生成控制的方法,不能写在IsPostBack里面)
Ext.Net.TextField tf = new TextField();
tf.ID = "txt" + strName;
this.你的容器.Items.Add(tf);
后台获取值的方法
Ext.Net.TextField tf = (Ext.Net.TextField)this.你的容器.FindControl("ID");
*/
btn2.Listeners.Click.Handler = "EX.btnTestClick2();";
plTest.Items.Add(btn2);
/*
Request.Form[控件Name]
此外System.Collections.Specialized.NameValueCollection nc = new System.Collections.Specialized.NameValueCollection(Request.Form); Response.Write(nc.GetValues("txtname")[0].ToString());此方法只能对<input type="text" />等类型的控件数据进行获取,对于select控件,如果value和text不一样,只能获取value
*/
btn3.Listeners.Click.Handler = "EX.btnTestClick3();";
plTest.Items.Add(btn3);
//JS+Ext.Net.DirectMethod方法实现后台代码获取前台控件内容**
btn4.Listeners.Click.Handler = "var arr =getNumbyName();EX.btnTestClick4(arr);";
plTest.Items.Add(btn4);
}
[DirectMethod]
public void btnTestClick1(string str1, string str2, string str3)
{
X.Msg.Alert("getValue方法", string.Format("txt1:{0};txt2:{1};txt3:{2}", str1, str2, str3)).Show();
}
[DirectMethod]
public void btnTestClick2()
{
Ext.Net.Button a = (Ext.Net.Button)this.plTest.FindControl("btn1");
TextField b = (Ext.Net.TextField)this.plTest.FindControl("txt1");
X.Msg.Alert("FindControl方法", string.Format("txt1:{0};", a.Text.ToString()+b.Text.ToString())).Show();
}
[DirectMethod]
public void btnTestClick3()
{
string str = Request.Form["txt"];
X.Msg.Alert("RequestForm方法", string.Format("txt123:{0};", str)).Show();
}
[DirectMethod]
public void btnTestClick4(string[] arr)
{
string str = arr.ToString();
X.Msg.Alert("JS方法", string.Format("txt123:{0};", str)).Show();
}
}
}