我现在想在treeView加个textBox(服务器端的)
重写CreateChildControls()
protected override void CreateChildControls()
{
System.Web.UI.HtmlControls.HtmlInputText text = new HtmlInputText("text");
text.ID ="test";
this.Controls.Add(text);  
    
base.CreateChildControls ();
}
可是报错如下: 
CGC.Web.WebControls.UI.CGCTree”不允许使用子控件。有谁知道如何给treeView加个文本框吗?

解决方案 »

  1.   

    public class CGCTree:Microsoft.Web.UI.WebControls.TreeView
    可以继承呀.
    我在里面用HtmlTextWriter也可以加一input上去可我想要服务器端的textbox
    不继承?那有其他方法吗?大家帮忙顶顶吧!
      

  2.   

    我重写写过!并加了很多javascript
      

  3.   

    服务器端控件,那就不能在htc文件实现了!
    关注!
      

  4.   

    to  evans00220405(系统分析师): 加属性,加js我会,你能帮我解决一下吗?我在页面上加了一<input>,后台给他赋值,通过input里的值设定tree的checkbox状态.
    写了些控制tree的脚本,如:点父选中所有子,点子选中它的父及父的父.....
    页面上还放了一<input>保存树的个节点的状态(用于提交到后台,后台解析完后,保存到数据库中),功能都实现了,我现在想把这些功能封装成一控件.可继承treeView确不让我在里面加别的控件,大家帮帮忙好吗?给思路,代码都行!
      

  5.   

    //参考一下下面的代码,实现了checkbox 、radiobox、textbox、button功能
    //aspx
    <%@ Page language="c#" Codebehind="Add_Style_1.aspx.cs" AutoEventWireup="false" Inherits="HWE.wtd.Add_Style_1" %>
    <%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>
    <%# name%>
    试验 选择试验项目</title>
    <base target="_self">
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="C#" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    <LINK href="../cmdimg/style.css" type="text/css" rel="stylesheet">
    <script language="javascript" id="clientEventHandlersJS">
    <!--
    var twcount;
    var FYH;
    function btnCancel_onclick() {
        window.close();
    }
    window.onunload =function(){
    returnValue= "3";
    }
    window.onload =function(){
    dialogHeight ="500px";
    }//单击TreeView
    function treeview_onclick(e){
    //获取单击TreeView控件treenode编号
    var i=e.clickedNodeIndex;
    if(i==null){
    return false;
    }
    var node =e.getTreeNode(i);

    //获取原始状态
    var checked;
    try{
    checked= node.getAttribute("checked");
    }catch(e){
    checked=false;
    }
    //改变选择的按钮状态
    checked = !checked;
    try{
    node.setAttribute("checked",checked);
    }
    catch(e){
    alert(e.description)
    }
    if(node.getAttribute("subtree")!=null){
    var all=node.getAttribute("subtree").all;
    checksubtree(all,checked);
    }
    }
    var type="";
    function checksubtree(all,checked){
      for(i=0;i<all.length;i++){
    if(all[i].type =="checkbox"){
        all[i].checked = checked;
    setchecked(all[i],checked)
    type="checkbox";
    }
    if(all[i].type=="radio") //radio类型需要单独处理
    {
    if(type!="radio"){
    all[i].checked = checked;
    setchecked(all[i],checked)
    type ="radio";
    }
    else{
    setchecked(all[i],false)
    type ="radio";
    }
    }
    }
    type="";
    }
    function setchecked(chk,checked){
    //清除相同的选项
    var hide = document.getElementById("hiddenField");
    var checkedstr = hide.value;
    if(checkedstr.charAt(0)!=";")
    checkedstr += ";";
    checkedstr=checkedstr.replace(";"+chk.id+";",";");
    //如果类型为radio需要清除以前选择的记录
    if((chk.type =="radio") &&(chk.checked)){
        //radiobox编号规则为 综合报告代码+"_"+基础报告代码+"_"+试验项目代码+"_"+试验指标序号
    var i = chk.id.lastIndexOf("_");
    var no = chk.id.substring(0,i+1);//like LA_LA01_001_
        
    //通过;进行拆分,查找出以前选择的同类复选信息进行处理
    var arr =checkedstr.split(";");
    //重新对checkedstr进行赋值
    checkedstr=";";
    for(i=0;i<arr.length;i++){
        if(arr[i] =="")
    continue;

    if(arr[i].indexOf(no) =="-1"){ //表示不存在同时需要排除单选框的存在情况
    checkedstr+=arr[i]+";";
    }
    }
    }
    if(checked){ //增加选择
    checkedstr += chk.id+";";
    }
    hide.value =checkedstr;
    }
    function showwindow(e,zid){
    var s=showModalWindow("../wtd/Add_Dynamic.aspx?id="+e+"&FYH="+FYH+"&zid="+zid,550,450);
    event.cancelBubble=true;
    }function info(e){
    alert(e);
    }
    function checknum(){
        var e = event.srcElement
    if(isNaN(e.value) || e.value<1){
        e.value="1";
        alert("输入值只能为不小于1的整数,请重新输入");
        return false;
    }
    savevalues(e);
    event.cancelBubble=true;
    }
    function savevalues(e){
    var value=e.value;
    var id= e.id;
    var hideNum = document.getElementById("hiddenFieldNum");
    var numstr = hideNum.value;
    if(numstr.indexOf(id+":")==-1)//一个也没有
    numstr+=id+":"+value+";";

        //通过一定的格式保存数据信息 input_LE_LE02_28_38:1 (id:value;id:value)
        var arr =new Array();
        arr = numstr.split(";");
        //判断其中是否包含有该表格控件的值
        numstr="";
        for(i=0;i<arr.length;i++){
            if(arr[i]=="")
                continue;
            if(arr[i].indexOf(id+":")!=-1){ //进行相加
    numstr+=id+":"+value+";";
            }
            else{
         numstr+=arr[i]+";";
            }
        }
    hideNum.value =numstr;

    }
    function setcheckedNum(id,box){
    var hideNum = document.getElementById("hiddenFieldNum");
    var numstr = hideNum.value;
    if(numstr.charAt(0)!=";")
    numstr += ";";
       
    //如果类型为radio需要清除以前选择的记录
    var i = id.lastIndexOf("_");
    var no =id.substring(0,i+1);//like input_LA_LA01_001_
    if((box.type =="radio") &&(box.checked)){
        //radiobox编号规则为 综合报告代码+"_"+基础报告代码+"_"+试验项目代码+"_"+试验指标序号
    var i = box.id.lastIndexOf("_");
    var no = box.id.substring(0,i);//like LA_LA01_001_
        alert(no);
    //通过;进行拆分,查找出以前选择的同类复选信息进行处理
    var arr =numstr.split(";");
    //重新对checkedstr进行赋值
    numstr=";";
    for(i=0;i<arr.length;i++){
        if(arr[i] =="")
    continue;
    if(arr[i].indexOf(no) =="-1"){ //表示不存在同时需要排除单选框的存在情况
    numstr+=arr[i]+";";
    }
    else{
        numstr+= arr[i].replace(id,"")+";";
    }
    alert(arr[i]);
    }
    }
    if((numstr.indexOf(id)=="-1")&& box.checked)
    numstr += id+";";
    if(!box.checked)
            numstr = numstr.replace(";"+id+";",";");
    hideNum.value =numstr;
    }
    //-->
    </script>
    </HEAD>
    <body bgColor="#99cc99" scroll="no">
    <FORM id="Cmd" method="post" runat="server">
    <TABLE id="Table3" height="100%" cellSpacing="0" cellPadding="3" width="500" align="center"
    border="0">
    <TR>
    <TD class="TitleHeadStyle" style="HEIGHT: 27px; BACKGROUND-COLOR: infobackground" vAlign="middle"
    align="left" colSpan="2">试样项目-试验类型[<asp:label id="LabelType" runat="server" BackColor="Transparent"></asp:label>]</TD>
    </TR>
    <TR>
    <TD vAlign="top" align="left" bgColor="#ffffff" colSpan="2"><iewc:treeview id="TreeView1" runat="server" SelectedNodeIndex="0" BorderStyle="None" Height="100%"
    Width="100%" SelectedStyle="backgroudcolor:FF0000;" Indent="40">
    <iewc:TreeNodeType CheckBox="True"></iewc:TreeNodeType>
    </iewc:treeview></TD>
    </TR>
    <TR>
    <TD style="DISPLAY: none" align="left"><FONT face="宋体"><INPUT id="autoClose" type="checkbox"><label title="选择该选项保存数据后窗口将自动关闭..." for="autoClose">自动关闭</label></FONT></TD>
    <TD style="HEIGHT: 56px" align="right"><FONT face="宋体"><asp:textbox id="hiddenFieldNum" runat="server" Width="181px" ReadOnly="True"></asp:textbox>&nbsp;<asp:textbox id="hiddenField" runat="server" Width="114px" ReadOnly="True"></asp:textbox></FONT><INPUT class="bluebotton" id="btnSave" title="快捷键( ALT+S )确定保存设置的信息.." type="button" value="保存"
    name="btnSave" runat="server"><INPUT class="yellowbotton" id="btn_Close" accessKey="S" onclick="window.close();" type="button"
    value="关闭" name="btn_Close"></TD>
    </TR>
    <TR>
    <TD align="left" colSpan="2" height="20">提示:请将您要设置的试验报告设置为选中状态。</TD>
    </TR>
    </TABLE>
    </FORM>
    </body>
    </HTML>
      

  6.   

    //cs
    /*
     * code name :Add_style_1.aspx.cs
     * author:wuchen
     * date:2004/5/22
     * description : 保存选择的试样和条件信息到委托单_接口表,以前的保存方式是保存信息到委托单_试样_保存记录
     *               现在发现这种方式可实施性比较差,故更改.以前的code请见 Add_style_1_bak20040522.aspx.cs
     * 
     * update date:2004/06/11 
     * description:甲方需求发生变化,显示上体现出多选和单选的区别
     * 
     * update date:2004/08/06
     * description:增加在本页输入试验的次数和 弹出多条数据录入的功能
     * 这些功能对应的数据表:Dynamic_CountRecord ,记录试验次数
     *                       Dynamic_Settings     设置对应数据表的显示
     *                       Dynamic_....         对应的多条数据录入数据表
     *                       sys_试验项目_对应指标 增加了字段是否计数、计数描述信息、DynamicId  
     * */using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using WebControlLibrary ;
    using System.Data.SqlClient;
    using SysClassLibrary ;
    using Microsoft.Web.UI.WebControls; 
    namespace HWE.wtd
    {
    /// <summary>
    /// TreeView's property
    /// </summary>
    public class Add_Style_1 : System.Web.UI.Page
    {
    protected System.Web.UI.HtmlControls.HtmlForm Form1;
    protected System.Web.UI.HtmlControls.HtmlInputButton btnSave;
    protected System.Web.UI.HtmlControls.HtmlForm Form3;
    protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
    protected System.Web.UI.WebControls.Label LabelType;
    protected System.Web.UI.WebControls.RadioButton RadioButton1;
    /// <summary>
    /// 选择的信息
    /// </summary>
    protected System.Web.UI.WebControls.TextBox hiddenField;
    protected System.Web.UI.WebControls.TextBox hiddenFieldNum;
    public string name;

    DataTable dt=new DataTable();
    private SqlDataReader dr =null ;
    /// <summary>
    /// 传入样式序号
    /// </summary>
    private string FYH=string.Empty ;
    //委托单序号
    private string WTD_NO=string.Empty;
    private string numInput =string.Empty; //保存填入的文字信息
    /// <summary>
    /// 保存生成的数字信息
    /// </summary>
    ArrayList num=new ArrayList();
    private void Page_Load(object sender, System.EventArgs e)
    {

    //清楚曾经保存的信息
    num.Clear();
    FYH= Request.QueryString["FYH"];
    this.TreeView1.Attributes["onclick"]="return treeview_onclick(this);";
    this.hiddenField.Attributes["style"]="display:none";
    this.hiddenFieldNum.Attributes["style"]="display:none";
    this.DataBind();
    //测试数据
    if(FYH ==null)
    {
    return;
    }
    if(!IsPostBack)
    {
    this.LabelType.Text=(string)DataAccess.ExecuteScalar("select TOP 1 试样类型 from 委托单_样式明细表 where 序号="+FYH);


    InputDataBound();
    }
    name=this.LabelType.Text ;

    //输出分样序号
    Page.RegisterClientScriptBlock("FYH_"+this.UniqueID ,string.Format ("<script language='javascript'>var FYH='{0}';</script>",FYH));
    this.DataBind();
    }

    /// <summary>
    /// 输入数据绑定
    /// </summary>
    private void InputDataBound()
    {
    //清除以前产生的树
    TreeView1.Nodes.Clear();
    numInput ="";
    //创建选择树
    CreateTree();

    //输出文字框中默认值
    this.hiddenFieldNum.Text  = numInput;
    }
    private void CreateTree()
    {
    //目录数起的作用仅仅是显示出记录,保存通过操作相应的选择按钮来完成
    //对CheckBox 和 RadioBox 的id 编号进行规范
    //同时在客户端创建一个隐藏控件来记录被选择的控件的id值,然后在服务器端接收这些控件值,进行拆分后保存到服务器,隐藏按钮的值为最后选择的试验项目
    //综合报告  综合报告 
    //基础报告  综合报告代码+"_"+基础报告代码+"_"+试验项目代码
    //试验指标  综合报告代码+"_"+基础报告代码+"_"+试验项目代码+"_"+试验指标序号
    //如何隐藏某些不需要显示的综合报告,通过在服务器端设置一个属性了确定不生成该类报告的控件

    //获取保存的信息
    string sylx=this.LabelType.Text;
    DataAccess.dataTable(string.Format("select * from view_试验试样信息  where 分样序号 ={0} and 是否显示='1'  ORDER BY  综合报告代码 ASC,基础报告代码 ASC ",FYH),ref dt);
    //DataAccess.dataTable(string.Format("select * from view_试验试样信息  where 分样序号 ={0}   ORDER BY  综合报告代码 ASC,基础报告代码 ASC ",FYH),ref dt);
    string 综合报告代码=string.Empty;
    string 基础报告代码=string.Empty ;
    //一级目录
    TreeNode ParentNode =new TreeNode();  
    foreach(DataRow row in dt.Rows)
    {
    //创建基础报告列表
    TreeNode node_jc;
    node_jc=new TreeNode();
    node_jc.Expanded =true;
    //基础报告  综合报告代码+"_"+基础报告代码+"_"+试验项目代码+"_"
    综合报告代码 = row["综合报告代码"].ToString(); string id =string.Format("{0}_{1}_{2}",综合报告代码,row["基础报告代码"].ToString(),row["试验项目代码"].ToString());
    node_jc.ID = string.Format("$JC_{0}_{1}",row["分样序号"].ToString(),row["试验项目序号"].ToString()); 
    node_jc.Text =string.Format ("<input id='{0}'  "+(isSavedById(id)?"checked":"")+"   type=\"checkbox\"/>{1}",id,row["试验项目名称"].ToString());
    CreatedRelateIndex(ref node_jc,row);
    TreeView1.Nodes.Add(node_jc);
    }
    }
      

  7.   

    private void CreatedRelateIndex(ref TreeNode tree,DataRow row)
    {
    DataTable dt_指标=new DataTable();
    DataAccess.dataTable(string.Format("select 指标id,ISNULL(试验次数,1) AS 次数 from Dynamic_CountReCord where 分样id={0}",FYH),ref dt_指标);
    DataAccess.dataReader(string.Format("select * from sys_试验项目_对应指标 where 试验项目代码='{0}'",row["试验项目代码"].ToString()),ref dr);
    string s =string.Empty;        
    while(dr.Read())
    {
    TreeNode node =new TreeNode();
    //试验指标  综合报告代码+"_"+基础报告代码+"_"+试验项目代码+"_"+试验指标序号
    string id =string.Format("{0}_{1}_{2}_{3}",row["综合报告代码"].ToString(),row["基础报告代码"].ToString(),row["试验项目代码"].ToString(),dr["序号"].ToString());
    string numvalue=string.Empty;
    DataRow[] row_指标 =dt_指标.Select("指标id="+dr["序号"].ToString());
    if(row_指标.Length ==0)
    numvalue="1";
    else
    numvalue = row_指标[0]["次数"].ToString();

    if(dr["是否单选"].ToString() =="")
    s = "";
    else if(dr["是否单选"].ToString() =="True")
    s= "<input id='"+id+"' type ='radio'  "+(isSavedById(id)?"checked":"")+"   name = '"+dr["试验项目代码"].ToString()+"'>";
    else
    {
    s= "<input id='"+id+"' type ='checkbox'  "+(isSavedById(id)?"checked":"")+"   name = '"+dr["试验项目代码"].ToString()+"'>";
    }
    node.ID ="ZB_"+id;

    //此处进行更改,以便能够获取每个点的设置情况
    if(dr["DynamicId"].ToString()=="")
    node.Text =s+string.Format("<label >{1}</label>",id,dr["指标名称"].ToString()); 
    else
    node.Text =s+string.Format("<label >{1}</label>",id,dr["指标名称"].ToString()) +"   &nbsp;&nbsp;&nbsp;" +string.Format("<input type='button' value='编辑' onclick ='return showwindow(\"{0}\",\"{1}\")'>",dr["DynamicId"],dr["序号"]); //需要进行数字判断
    if(dr["是否计数"].ToString()=="True")
    {
    node.Text =s+string.Format("<label >{1}</label>",id,dr["指标名称"].ToString()) +"   &nbsp;&nbsp;&nbsp;" +dr["计数描述信息"].ToString().Replace("{0}","<input id = 'input_"+id+"' type='text' value = '"+numvalue+"' size='6'onchange='checknum();event.cancelBubble=true;'>");
    numInput += "input_"+id+":"+numvalue+";";
    num.Add(id);
    }
        //如果子节点和父节点名称相同,则将子节点信息修改父节点,使其显示一级目录
    if(dr["指标名称"].ToString() ==row["试验项目名称"].ToString())
    {
    tree  = node;
    break;
    }
    tree.Nodes.Add(node);
    }
             ViewState["sys_savedNumInfo"] = num;
    dr.Close();
    }
            /// <summary>
            /// 获取保存的试样选择信息
            /// </summary>
            /// <param name="isUpdated">是否是更新后获取</param>
            /// <returns>Hashtable </returns>
    private Hashtable getSavedInfo(bool isUpdated)
    {
    if(ViewState["SavedInfo"]!=null && !isUpdated)
    return (Hashtable)ViewState["SavedInfo"];

    if(ViewState["SavedInfo"] ==null || isUpdated)
    {
    Hashtable ht =new Hashtable();
    SqlDataReader dr=null;
    SysClassLibrary.DataAccess.dataReader(string.Format("select * from 委托单_试样_保存信息  where 分样号={0}",FYH),ref dr);

    //子节点id 
    string id=string.Empty;
    //父节点pid
    string pid=string.Empty; //此处循环中只有子节点被选中的情况,由子节点判断父节点是否也被选中
    while(dr.Read())
    {
    if(dr[1].ToString()!="" && dr[2].ToString()!="" && dr[3].ToString()!="" && dr[5].ToString()!="")
    id =string.Format("{0}_{1}_{2}_{3}",dr[1].ToString(),dr[2].ToString(),dr[3].ToString(),dr[5].ToString()); //指标
    if(!ht.ContainsKey(id))
    ht.Add(id,id);
    if(dr[1].ToString()!="" && dr[2].ToString()!="" && dr[3].ToString()!="") 
    pid =string.Format("{0}_{1}_{2}",dr[1].ToString(),dr[2].ToString(),dr[3].ToString()); //基本
    if(!ht.ContainsKey(pid))
    ht.Add(pid,pid);
    }
    dr.Close();

    //同时将以前保存的信息存在hiddenField中去,方便客户端进行筛选
    string selstr = ";";
    foreach(DictionaryEntry d in  ht)
    {
    selstr+=d.Key.ToString()+";";
    }
    this.hiddenField.Text =selstr; ViewState["SavedInfo"] =ht;
    }
    return (Hashtable)ViewState["SavedInfo"];
    } private bool isSavedById(string id)
    {
    Hashtable ht=getSavedInfo(false);
    return  ht.ContainsKey(id);
    }
      

  8.   

    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.btnSave.ServerClick += new System.EventHandler(this.btnSave_ServerClick);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion

    private void btnSave_ServerClick(object sender, System.EventArgs e)
    {
    SaveData();
    }

    /// <summary>
    /// 保存选择的试样信息
    /// 编号规则
    /// 基础报告  综合报告代码+"_"+基础报告代码+"_"+试验项目代码
    /// 试验指标  综合报告代码+"_"+基础报告代码+"_"+试验项目代码+"_"+试验指标序号
    /// 通过分样号删除以前存在试验类型的所有记录
    /// string sqlstr= string.Format ("DELETE FROM 委托单_接口表 WHERE 分样序号='{0}';",FYH);
    /// 委托单_接口表(序号,试验项目序号,试验要求序号,分样序号,费用序号,其它接口序号) 后面两个为预留接口 费用接口通过委托单编号来进行连接,委托单编号=财务编号
    /// 生成sql语句
    /// id='LA_LA01_002' 
    /// </summary>
    private void SaveData()
    {
    //通过;拆分保存过的记录
    string[] sels = hiddenField.Text.Split(';');
    //清空历史保存记录
    string sqlstr= string.Format ("DELETE FROM 委托单_试样_保存信息 WHERE 分样号={0};",FYH); //保存过的指标信息
    ArrayList selectedZB=new ArrayList();
    for(int i=0;i<sels.Length ;i++) 
    {
    //排除为空的情况
    if(sels[i].Trim().Length ==0)
    continue;
    string[] s = sels[i].Split('_');
    if(s.Length == 4) //试验指标
    {
    sqlstr+= string.Format("insert into 委托单_试样_保存信息(综合报告代码,基础报告代码,试验项目代码,试验项目指标编号,分样号)values('{0}','{1}','{2}',{3},{4});",s[0],s[1],s[2],s[3],FYH);
    selectedZB .Add(sels[i]);
    }
    }
    //保存选择的信息
    DataAccess.ExecuteSql(sqlstr); sqlstr = string .Format("DELETE FROM Dynamic_CountRecord where 分样id={0};",FYH);
    for(int i=0;i<selectedZB.Count;i++)
    {
    string id =selectedZB[i].ToString();
    if(IsInNums(id))
    {
    int n=id.LastIndexOf("_");
    string input = "input_"+id;
    string 指标id =id.Substring(n+1,id.Length-n-1);
    string 试验次数= string.Empty;
    getNumInputHideValue(指标id,ref 试验次数);
    sqlstr+= string.Format("insert into Dynamic_CountRecord(分样id,指标id,试验次数)values({0},{1},{2});",FYH,指标id,试验次数);
    }
    }
    //保存输入的数字信息
    DataAccess.ExecuteSql(sqlstr);
    Page.RegisterStartupScript ("info","<script>window.close();</script>");

    getSavedInfo(true);
    InputDataBound();
    } /// <summary>
    /// 判断需要输入数字的情况
    /// </summary>
    /// <param name="Id"></param>
    /// <returns></returns>
    private bool IsInNums(string Id)
    {
    num = (ArrayList)ViewState["sys_savedNumInfo"];
    bool isIn=false;
    for(int i=0;i<num.Count;i++){
    if(num[i].ToString() ==Id){
    isIn=true;
    break;
    }
    }
    return isIn;
    } /// <summary>
    /// 获取对应指标的试验次数
    /// </summary>
    /// <param name="指标id"></param>
    /// <param name="试验次数"></param>
    private void getNumInputHideValue(string 指标id,ref string 试验次数)
    {
    string[] strs = this.hiddenFieldNum.Text.Split(';');
    for(int i=0;i<strs.Length;i++)
    {
    if(strs[i] =="")
    continue;
    string[] strs1=strs[i].Split(':');
    if(strs1.Length !=2)
    continue;
    int n = strs1[0].LastIndexOf("_"); 

    if(strs1[0].Substring(n+1,strs1[0].Length-n-1)==指标id)
    {
    试验次数 = strs1[1];
    break;
    }
    }
    }
    private void Add_Style_1_Error(object sender, EventArgs e)
    {
    Page.RegisterStartupScript("info","<script>alert(\"保存所选试样信息出错,请重试!\");</script>");
    Server.ClearError();
    }
    }}
      

  9.   

    如果你要让TreeView控件加文本框,估计要在TreeNode类中的RenderUpLevelPath事件中加入相应的实现,且不能直接用HtmlControls.HtmlInputText控件,而要用output.RenderBeginTag及相应的方法来实现。
    我没试过!
      

  10.   

    实现了checkbox 、radiobox、textbox、button功能
      

  11.   

    没有找到在TreeView TreeNode 中 Add web control 的方法,故通过 
    Node.Text = "<input id='text_1' type='text'>";的方法生成一个文本框到客户端,然后通过js编程获取文本框的值