求解怎么在 static 类中获取到当前页面的控件

著名天才___ 2013-07-17 04:57:51
比如我前台页面上有一个控件
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>

而我后台 类中某个 静态类中要获取到这个控件 然后操作他。
求解 怎么获取前台的Panel
...全文
626 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2013-07-18
  • 打赏
  • 举报
回复
对于你的问题:
引用
我的需求是这样子的、 我页面加载的时候 要生成很多个 html 的img (只能是HTML的IMG) 然后我要给 img 添加一个onclick 来实现点击后创建 很多不同的控件放在panel1 比如 我img1点击onclick 后要创建一些 checkbox img2点击后要创建一些lable 我现在 创建控件什么的放在panel1 中都没问题。就差 js调用后台的getValue()方法
既然在panel1中创建控件什么的都没有问题,就是说空间render成html已经返回给browser了,应该直接用js从控件中取得值就可以了,你可以用Chrome的Developer tools看看。
insus 2013-07-18
  • 打赏
  • 举报
回复
这个静态方法,不可以只面对Panel这控件,而是考虑各种控件。建议使用接口。比如ATM柜员机,不只是针对本银行一某一种储蓄卡,而是面对各种银行卡。
宝_爸 2013-07-18
  • 打赏
  • 举报
回复
HTTP基本就是Request和Response,而且是无状态的。 Request一个页面,服务器返回一些Html。 Request调用webmethod,返回一个字符串结果。 这两个Request直接互相是不知道的,因此做到你要的结果。 如果你问为什么页面上点击按钮,可以在处理函数中取得值.这是因为ViewState的存在,asp.net使用ViewState在两个request间传递空间中的值。Request一个页面和Request一个web servcie却没有ViewState存在。
ztszhq 2013-07-18
  • 打赏
  • 举报
回复
引用 15 楼 ZhuMingTianCai 的回复:
我的需求是这样子的、 我页面加载的时候 要生成很多个 html 的img (只能是HTML的IMG) 然后我要给 img 添加一个onclick 来实现点击后创建 很多不同的控件放在panel1 比如 我img1点击onclick 后要创建一些 checkbox img2点击后要创建一些lable 我现在 创建控件什么的放在panel1 中都没问题。就差 js调用后台的getValue()方法
getValue()方法你只让他返回数据,将list 转换为json,然后前端用ajax调用getValue获取数据后解析json 脚本创建checkbox. 或者 直接在getValue()方法中直接利用list 拼成想要的html字符串,前端ajax调用后直接 innerHTML panel 控件.net生成的html元素 是div 即<div id="Panel1"></div>
  • 打赏
  • 举报
回复
直接传txt ddl作为参数
饕餮123 2013-07-17
  • 打赏
  • 举报
回复
asp.net造就了一大批不懂html,css,js和http协议的专业web开发人员
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
引用 14 楼 u011096386 的回复:
楼主要做的是什么? 在Panel1加 CheckBoxList 可以将getValue只返回checkbox需要的数据,然后用js去在panel1 中创建checkbox 或不用js 创建 在服务器按钮的事件中调用 getValue 这个是需要回发,或者你在页面加载的时候调用 getValue才能有效的啊
大神 求解呀、
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
我的需求是这样子的、 我页面加载的时候 要生成很多个 html 的img (只能是HTML的IMG) 然后我要给 img 添加一个onclick 来实现点击后创建 很多不同的控件放在panel1 比如 我img1点击onclick 后要创建一些 checkbox img2点击后要创建一些lable 我现在 创建控件什么的放在panel1 中都没问题。就差 js调用后台的getValue()方法
ztszhq 2013-07-17
  • 打赏
  • 举报
回复
楼主要做的是什么? 在Panel1加 CheckBoxList 可以将getValue只返回checkbox需要的数据,然后用js去在panel1 中创建checkbox 或不用js 创建 在服务器按钮的事件中调用 getValue 这个是需要回发,或者你在页面加载的时候调用 getValue才能有效的啊
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
12楼 我前台的JS 要调用到后台的 getValue方法、不会用别的所有只有用了[WebMethod] 加了个 static
ztszhq 2013-07-17
  • 打赏
  • 举报
回复
引用 10 楼 ZhuMingTianCai 的回复:
[quote=引用 9 楼 u011096386 的回复:] [quote=引用 8 楼 ZhuMingTianCai 的回复:] [quote=引用 6 楼 u011096386 的回复:]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/// <summary>
///test 的摘要说明
/// </summary>
public class testClass
{
    public testClass()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
	}
    public static void changeAttr() {
        var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1");
        pnl.Visible = false;
    }
}
取出来的pnl =null 我这个静态方法是[WebMethod] 我要在前台用JS来调用这个方法 然后创建一些控件放在页面上的Panel1 里面的[/quote] js创建服务器控件? 这个不能够啊 你可以取出数据,然后用js 创建dom[/quote] 我代码是这样的

   /// <summary>
    /// 绑定选项值
    /// </summary>
    /// <param name="txtname"></param>
    /// <returns></returns>
    [WebMethod]
    public static void getValue(string txtname)
    {
        SoOptionsValueSystem system = new SoOptionsValueSystem();

        List<SoOptionsValue> list = system.Get_Info(txtname);
        CheckBoxList cblist = new CheckBoxList();

        cblist.RepeatColumns = 3;
        cblist.CellSpacing = 10;

        cblist.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Vertical;
        foreach (SoOptionsValue item in list)
        {


            cblist.ID = "CheckBoxList1";
            ListItem lt = new ListItem(item.txtValue, item.txtValue);
            lt.Attributes["text"] = item.txtValue;
            lt.Attributes["value1"] = item.txtValue;
            cblist.Items.Add(lt);
            
            Panel1.Controls.Add(cblist);


        }
        
    }

Panel1.Controls.Add(cblist); 我现在就是获取不到[/quote] 为什么要加上[WebMethod] 它是用不了服务器控件的 只能返回数据,操作不了你当前Page中的control
exception92 2013-07-17
  • 打赏
  • 举报
回复
前台的异步处理操作后台的静态方法时,静态方法里是不能调用前台的服务器控件的。 这个苦逼的错误前几天搞的我恶心。建议lz还是根据9L的意见创建dom吧。
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
引用 9 楼 u011096386 的回复:
[quote=引用 8 楼 ZhuMingTianCai 的回复:] [quote=引用 6 楼 u011096386 的回复:]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/// <summary>
///test 的摘要说明
/// </summary>
public class testClass
{
    public testClass()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
	}
    public static void changeAttr() {
        var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1");
        pnl.Visible = false;
    }
}
取出来的pnl =null 我这个静态方法是[WebMethod] 我要在前台用JS来调用这个方法 然后创建一些控件放在页面上的Panel1 里面的[/quote] js创建服务器控件? 这个不能够啊 你可以取出数据,然后用js 创建dom[/quote] 我代码是这样的

   /// <summary>
    /// 绑定选项值
    /// </summary>
    /// <param name="txtname"></param>
    /// <returns></returns>
    [WebMethod]
    public static void getValue(string txtname)
    {
        SoOptionsValueSystem system = new SoOptionsValueSystem();

        List<SoOptionsValue> list = system.Get_Info(txtname);
        CheckBoxList cblist = new CheckBoxList();

        cblist.RepeatColumns = 3;
        cblist.CellSpacing = 10;

        cblist.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Vertical;
        foreach (SoOptionsValue item in list)
        {


            cblist.ID = "CheckBoxList1";
            ListItem lt = new ListItem(item.txtValue, item.txtValue);
            lt.Attributes["text"] = item.txtValue;
            lt.Attributes["value1"] = item.txtValue;
            cblist.Items.Add(lt);
            
            Panel1.Controls.Add(cblist);


        }
        
    }

Panel1.Controls.Add(cblist); 我现在就是获取不到
ztszhq 2013-07-17
  • 打赏
  • 举报
回复
引用 8 楼 ZhuMingTianCai 的回复:
[quote=引用 6 楼 u011096386 的回复:]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/// <summary>
///test 的摘要说明
/// </summary>
public class testClass
{
    public testClass()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
	}
    public static void changeAttr() {
        var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1");
        pnl.Visible = false;
    }
}
取出来的pnl =null 我这个静态方法是[WebMethod] 我要在前台用JS来调用这个方法 然后创建一些控件放在页面上的Panel1 里面的[/quote] js创建服务器控件? 这个不能够啊 你可以取出数据,然后用js 创建dom
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
引用 6 楼 u011096386 的回复:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/// <summary>
///test 的摘要说明
/// </summary>
public class testClass
{
    public testClass()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
	}
    public static void changeAttr() {
        var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1");
        pnl.Visible = false;
    }
}
取出来的pnl =null 我这个静态方法是[WebMethod] 我要在前台用JS来调用这个方法 然后创建一些控件放在页面上的Panel1 里面的
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
引用 4 楼 dongxinxi 的回复:
var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1"); 你可以写扩展方法,扩展至Page类或者Control类或者接口
求详细信息
ztszhq 2013-07-17
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/// <summary>
///test 的摘要说明
/// </summary>
public class testClass
{
    public testClass()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
	}
    public static void changeAttr() {
        var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1");
        pnl.Visible = false;
    }
}
著名天才___ 2013-07-17
  • 打赏
  • 举报
回复
引用 2 楼 johneyson 的回复:
NEW 一个线程 在他的委托方法中: if(控件ID.invokerequired) 控件ID.Invoke( 调用控件更改其属性的匿名函数代理) else 直接写调用控件更改其属性
不懂哦 能详细点吗?
  • 打赏
  • 举报
回复
var pnl = (Panel)(HttpContext.Current.Handler as Page).FindControl("Panel1"); 你可以写扩展方法,扩展至Page类或者Control类或者接口
加载更多回复(3)
第一篇 基础篇 第0章 JDK安装和最简单的环境变量配置方法 第1章 Java基础概念 一、 Java基础语法 1、Helloworld.java 2、标识符 3、关键字 4、常量 5、变量 6、语句 6.1 if语句和switch语句 6.1.2 if语句举例 6.1.3 switch语句 6.2 for循环语句 6.3 while语句和do-while语句 6.3.1 while语句形式 6.3.2 do-while语句 6.3.3 while语句和do-while语句举例 6.4 break语句和continue语句 6.4.1 break语句 6.4.2 continue语句 二、类和对象 1、面向对象基础 1.1 面向对象程序设计入门分析 1.2 抽象 1.3 封装 2、类 2.1 类头 2.2类体 2.3 创建对象 2.4 面向对象举例 2.5 构造函数 2.5.1 构造函数的一般概念 2.5.2 创建自己的构造函数 2.5.3 构造方法注意事项 2.5.4构造函数的作用 3、方法 3.1 方法介绍 3.2方法定义 3.3调用方法 3.4 方法举例 4、访问控制符 5、this关键字 5.1 this方法应用举例 6. Static关键字 6.1 static应用举例 7. super关键字 7.1 super应用举例 8. abstract关键字 9. final关键字 9.1 final介绍 9.2 final使用注意事项 三、继承 1、继承的概念 1.1 继承的定义 1.2 继承举例 1.3 父类和子类 类继承 2.1 方法继承 2.2 方法覆盖 2.3 方法重载 3、多态与动态绑定 3.1 多态分为两种 3.2 调用一个对象方法的机制 3.3 方法调用举例 4、构造函数的重载 4.1 默认字段初始化 4.2 默认构造函数 4.3 显式字段初始化 4.4 构造函数被调用后的详细执行过程 5、包 5.1 创建包 5.2 创建可复用类的步骤简要说明 5.3 包的导入 5.4 包的可见性 接口 6.1 接口的概念 6.2 接口的声明 6.3 接口的实现 四、IO流及异常处理 1、流和文件 1.1 流 1.2 文件 2、常用流类 2.1 字节流 2.1.1 InputStream(输入流) 2.1.2 OutputStream(输出流) 2.1.3 FileInputStream(文件输入流) 2.1.4 FileOutputStream(文件输出流) 2.1.5 BufferedInputStream(缓冲输入流) 2.1.6 BufferedOutputStream(缓冲输出流) 2.1.7 PrintStream(打印流) 2.2字符流 2.2.1 Reader类 2.2.2 Writer类 2.2.3 FileReader类 2.2.4 FileWriter类 2.2.5 CharArrayReader类 2.2.6 CharArrayWriter类 2.2.7 BufferedReader类 2.2.8 BufferedWriter类 2.2.9 PrintWriter类 2.2.10 System.in对象和System.out对象 文件处理 3.1 创建或打开、关闭文件对象 3.2 关闭文件 3.3 read()方法 3.4 write()方法 3.5 其他操作文件的方法 4、Java异常处理 4.1 Java异常概念 4.2 异常类型 4.3 Java的内置异常 4.4 Java异常举例 4.5 异常的捕获和处理 4.6 异常抛出 4.6.1 throw语句 4.6.2 throws语句 4.6.3 finally语句 4.7 自定义异常类 4.8 异常应用的其他问题 4.9 异常应用举例 五、线程 1、线程的概念 1.1 程序、进程与线程 1.2 线程调度与优先级 1.3 线程的状态与生命周期 1.4 控制一个线程生命周期最常用的方法 2、线程的创建和启动 3、线程的同步与死锁 3.1 同步的概念 3.2 线程同步举例 3.3 线程死锁 六、GUI 1、图形用户界面概述 1.1 组件 1.2容器 1.3 AWT组件 1.4 Swing组件 1.5 组件与容器的关系 1.6 swing常用组件 2、Swing常用组件 2.1文本组件 2.2 标签 2.3 按钮 2.4单选按钮组件 2.5 复选框组件 2.6列表框组件 2.7组合框组件 2.8滑块组件 事件处理 3.1 事件处理原理 3.2 事件架构 3.3 焦点事件 3.4 键盘事件 3.5 鼠标事件 4、布局设计 4.1 FlowLayout流布局 4.2 BorderLayout边界布局 4.3 CardLayout卡式布局 4.4 GridLayout卡式布局 4.5 GridBagLayout卡式布局 4.6 BoxLayout盒式布局 5、菜单步骤 6、对话框设计 6.1 JOptionPane对话框 6.2 JDialog对话框 文字与图形处理 7.1 文本和字体 7.2 简单图形绘制 7.3 颜色 7.4 图像处理 七、网络 1、Java网络编程简介 1.1 IP网间协议 1.2 TCP传输控制协议 1.3 UDP用户数据包协议 2、URL连接 2.1 URL 2.2 Java.net包中URL类定义 2.3 创建URL对象 2.4 Java.net包中URLConnection类 2.5 AppletContext接口类 2.6 获取网络属性信息 2.7 创建输入流(InputStream)对象 3、SOCKET连接 3.1 Socket通信的一般结构 3.2 TCP Socket编程 3.2.1 Socket类 3.2.2 ServerSocket类 3.3 UDP Socket编程 八、Java概念疑难解答 第2章 Java经典练习题 2.1 斐波那契数列 2.2 判断素数 2.3 水仙花数 2.4 分解质因数 2.5 杨辉三角 2.6 学习成绩查询 2.7 求最大公约数与最小公倍数 2.8 完全平方数 2.9 统计字母、空格、数字和其它字符个数 2.10 求主对角线之和 2.11 完数求解 2.12 求s=a+aa+aaa+aaaa+aa...a的值 2.13 高度计算 2.14 乘法口诀 2.15 无重复三位数 2.16 菱形打印 2.17 利润计算 2.18 第几天判断 2.19 从小到大输出数列 2.20 猴子吃桃问题 2.21 乒乓球比赛 2.22 求分数之和 2.23 求阶乘的和 2.24 递归求法 2.25 求不多于5的正整数 2.26 回文判断 2.27 星期判断 2.28 插数入数组 2.29 取整数的任意位 2.30 按顺序输出数列 2.31 位置替换 2.32 字符串排序 2.33 贷款器 2.34 通讯录排序 2.35 闰年判断 2.36 二元方程求解 2.37 密码解译 2.38 DVD查询 2.39 电子日历 2.40 万年历 第二篇 提高篇 第3章 Java常用算法 3.1递归算法 3.2冒泡排序算法 3.3 快速排序算法 3.4选择排序算法 3.5直接插入算法 3.6希尔排序算法 3.7 二分查找算法 3.8 二叉树 3.9 图的实现 3.10 生产者消费者的实现 3.11 银行家算法 3.12 KMP算法 3.13 RSA的实现 第4章 IO流实例开发 4.1流到底怎样输入和输出扯淡区 4.2 FileInputStream的应用 4.3 FileOutputStream的应用 4.4 FileReader的应用 4.5 FileWriter的应用 4.6 BufferedInputStream的应用 4.7 BufferedOutputStream的应用 4.8 BufferedReader的应用 4.9 BufferedWriter的应用 第5章 Java图形界面开发 5.1 开发自己的控件 5.2 控件的排布示例 5.3 开发自己的QQ聊天系统 5.4 颜色选择器 5.5 按钮测试 5.6 密码验证器 5.7 绘制自己的坐标 5.8 多种字体显示 5.9 窗口风格选择器 5.10 右键菜单 5.11 树形关系网 5.12 开发自己的文本编辑器 5.13 开发自己的剪切板 5.14 文本拖动效果演示 5.15 怎样拖动图片 5.16 开发自己的数字时钟 5.17 数字动画 5.18 滑杆调试器 5.19 启动程序开发 5.20 开发自己的调色板 5.21 文件选择器 5.22 丰富多彩的光标选择器 5.23 开发自己的浏览器 5.24 文字抖动效果演示 5.25 文字阴影效果演示 5.26 3D文字效果演示 5.27 波浪文字效果演示 5.28 飞行文字效果演示 5.29 伸展文字效果演示 5.30 开发自己的网页图片 5.31 火焰图片效果演示 5.32 图片百叶窗效果演示 5.33 图片倒影效果演示 5.34 怎样翻转图片 5.35 开发自己的闹钟 5.36 应用自己的万年历 5.37 开发自己的计算器 5.38 开发自己的电子相册 第6章 Java游戏 6.1 俄罗斯方块 6.2 连连看游戏 6.3 迷宫 6.4 模拟闪电 6.5 扫雷 6.6 贪食蛇 6.7 围棋 6.8 五子棋 6.9 人机猜拳游戏 第三篇 实战篇 第7章 项目开发 7.1 开发自己的浏览器 7.2 开发自己的象棋游戏 7.3 网络主机线程扫描与端口控制

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧