以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  [求助]如何“隐式”向控件写入文本内容?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=35658)


--  作者:Qr
--  发布时间:7/16/2006 10:22:00 AM

--  [求助]如何“隐式”向控件写入文本内容?
先来看代码:
=======================================
在ASPX页面上有一个DIV:<div id="TestDIV"></div>
---------------------------------------
后台cs代码:
class test{
   protected HtmlGenericControl TestDIV = new HtmlGenericControl();
   /*public void OutPutCont2Div()*/
   public void OutPutCont2Div(Object sender , EventArgs e)
   {
       TestDIV.InnerHtml = "Test";
   }
}
========================================

偶是想在Page_Load中直接调用OutPutCont2Div(),然后由cs代码“隐式”直接写TestDIV。这样的代码可行不?如果行不通,又该如何实现?3Q!


为将主题表述清楚,在这里先明确一下“显式”和“隐式”:
==================================
显式:[Page_Load](这种方法偶会)
//test中必须定义属性,或OutPutCont2Div()必须有返回值
test test = new test();
1、TestDIV.Text = test.OutPutCont2Div();//必须明确指出输出的对象是TestDIV
2、TestDIV.Text = test.属性;//必须明确指出输出的对象是TestDIV
==================================
隐式:[Page_Load]
//test中没有定义属性,且OutPutCont2Div()没有返回值,就象前面的cs代码
test test = new test();
test.OutPutCont2Div();//没有明确指出输出的对象是TestDIV,而是在cs中指定
===================================


--  作者:Qr
--  发布时间:7/16/2006 10:26:00 AM

--  [求助]另外一个同类问题:向DIV写入文本或HTML内容
要求:
在CreateChildControls()以外的地方写代码,要求能够向ID分别为maindiv和chlddiv的两个DIV写入文本或HTML内容。

aspx:
<%@ Page CodeBehind="myPage.cs" SRC="myPage.cs" Inherits="myPage" %>

cs:
//myPage.cs
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

public class myPage : Page {

 protected HtmlGenericControl maindiv = new HtmlGenericControl();
 protected HtmlGenericControl chlddiv = new HtmlGenericControl();

 protected override void CreateChildControls() {

  // Add Opening HTML Tags
  string strOpenHTML;
  strOpenHTML = "<html>" + "\n";
  strOpenHTML += "<head>" + "\n";
  strOpenHTML += "<title>myPage</title>" + "\n";
  strOpenHTML += "<style type=\"text/css\">" + "\n";
  strOpenHTML += "div{color:white;text-align:center}" + "\n";
  strOpenHTML += "#maindiv{display:block;background:blue;}" + "\n";
  strOpenHTML += "#chlddiv{display:block;background:red;}" + "\n";
  strOpenHTML += "</style>" + "\n";
  strOpenHTML += "</head>" + "\n";
  strOpenHTML += "<body>" + "\n";

  Controls.Add(new LiteralControl(strOpenHTML));

  string strBodyHTML;
  strBodyHTML = "<div id=\"maindiv\" runat=\"server\">" + "main_top" + "\n";
  strBodyHTML += "<div id=\"chlddiv\" runat=\"server\">chld</div>" + "\n";
  strBodyHTML += "main_bottom" + "</div>"+ "\n";

  Controls.Add(new LiteralControl(strBodyHTML));

  // Add Closing HTML Tags
  string  strCloseHTML;
  strCloseHTML = "</body>" + "\n" + "</html>";
  Controls.Add(new LiteralControl(strCloseHTML));
 }
/*
 protected void Page_Init(object sender, EventArgs e)
 {
 }
 protected void Page_Load(object sender, EventArgs e)
 {
 }
 protected void Page_PreRender(object sender, EventArgs e)
 {
 }
*/
}


--  作者:孤独
--  发布时间:7/16/2006 7:26:00 PM

--  
class test{
   protected HtmlGenericControl TestDIV = new HtmlGenericControl();
   /*public void OutPutCont2Div()*/
   public void OutPutCont2Div(Object sender , EventArgs e)
   {
       TestDIV.InnerHtml = "Test";
   }
}
这个类我没看明白干吗啊
谁发送Event到OutPutCont2Div呢
test test = new test();
1、TestDIV.Text = test.OutPutCont2Div();//必须明确指出输出的对象是TestDIV
2、TestDIV.Text = test.属性;//必须明确指出输出的对象是TestDIV
这个我也没看懂,你在哪里定义的TestDIV?如果是test的应该 test.TestDIV才对吧。但是你的TestDIV是个protect,也就是只有类内以及继承这个类的子类可以调用,所以你没法调用你定义的control
---------------------------------------------------------------------------------------------------------------
第二个你在CS里面写control我觉得.net没法认为那是个控件吧,这个我没试过。。。
不过可以在creatchildcontrols里面用回调,也就是委托调用外部函数。
--  作者:Qr
--  发布时间:7/16/2006 7:36:00 PM

--  
class test是在后台代码cs中定义的,在aspx的Page_Load中调用,实质上是个思路,没有形成完整的代码。目的是通过后台的CS代码向aspx页面上的TestDIV直接写入数据。

第一个问题在某论坛上发过,那个坛子里的MVP说可以的,又没给答案:(
第二个问题,恰好偶对“委托调用外部函数”不熟悉,看看再说。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms