各位高手小弟做了一个ModalPopup
放了一个Panle
Panle里面放了一个按钮和一个文本框,
一切显示正常,HTML代码如下
<asp:Panel ID="Panel1" runat="server" Height="138px" Width="200px">
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" /></asp:Panel>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" popupcontrolid="Panel1"  targetcontrolid="Panel1" BackgroundCssClass="modalBackground">
    </cc1:ModalPopupExtender>
一切正常
但是我要在Panle里面的按钮下写C#代码
要得到文本框,
this.TextBox1.Text();
为什么提示本类不包含TextBox1定义,我明明拖放了此控件,而且this也可以看到,为什么啊?
另外我是 $find("ModalPopupExtender1").show();这么show出这个ModalPopup的,请问我如果在后台点击Panle里的按钮关闭这个ModalPopup,C#代码改如何写,谢谢各位高手了,小弟先谢

解决方案 »

  1.   

    代码还是要写的。只是IDE完成了这个工作而已。在对应的Page类添加相关的成员。
      

  2.   

    this.TextBox1.Text();  // Text是属性不是方法,不应该加括号。
      

  3.   


    去了括号
    this.TextBox1.Text;
    提示this有错只有new对象表达式可用作语句
    为什么呀
    谢谢了
    麻烦详细点
    头一次用这玩意
      

  4.   

    string s = this.TextBox1.Text;
      

  5.   

    刚刚做了个测试,页面默认进入时直接用$find('model').show();显示modalPopup, 点击modalPopup内的Button时把TextBox1.Text显示在Label上,并关闭modalPopup.
    <head runat="server">
        <title></title>
        <style type="text/css">
            * { margin: 0; padding:0 }
            .panelPopup { border:solid 1px Black;width: 500px; height: 300px; }
            .modalBackground { background-color:#EFEFEF; filter:alpha(opacity=70); opacity:0.7;}
        </style>
        <script type="text/javascript">
            var showModal = true; //默认打开Popup
            function hideModal() {
                showModal = false;
            }
            function pageLoad() {
                if (showModal == true) {
                    alert(showModal);
                    $find('<%=  ModalPopupExtender1.ClientID %>').show();
                }
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <div>
            <asp:Panel ID="Panel1" runat="server" CssClass="panelPopup" Style="display: none;">
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                <asp:Button ID="ButtonOK"  runat="server" 
                    Text="关闭modalPopup, 并取得TextBox1.Text显示在Label1上。" onclick="ButtonOK_Click" />
                <asp:Button ID="ButtonCancel"  runat="server" Text="取消" />
            </asp:Panel>
            <cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" 
                TargetControlID="ButtonPopup" 
                PopupControlID="Panel1" 
                BackgroundCssClass="modalBackground" 
                CancelControlID="ButtonCancel">
            </cc1:ModalPopupExtender>        
            <hr />
            <asp:Button ID="ButtonPopup" runat="server" Text="手动打开Popup" />
            <hr />
            <asp:Label ID="Label1" runat="server" Text="Panel内的TextBox1.Text显示在这里。"></asp:Label>
        </div>
        </form>
    </body>
     protected void ButtonOK_Click(object sender, EventArgs e)
    {
            Label1.Text = TextBox1.Text;
            Page.ClientScript.RegisterStartupScript(this.GetType(), "key", "hideModal();", true);
    }
      

  6.   

    function pageLoad() 里的alert(showModal);删掉吧,测试用的。
      

  7.   

    Google Chrome, Safari, Opera, IE8, Firefox上都测试过了.
      

  8.   

    谢谢您
    我是在后台取不到前台的控件
    我试了一下
    前台任何一个控件都拿不到
    例如
    this.TextBox1.Text;
    就报错了
    我是这个问题
    不过还是很感谢您
      

  9.   

    你直接复制我上面的代码试过吗?有个问题我没搞清楚, 你想取得TextBox1.Text是想在js里取得,还是想在C#代码里取得?我给你的示例是在C#里取得的. 你先直接复制运行一下,然后再看看和你的要求有什么区别.比如你会发现TargetControlID="ButtonPopup" 为TargetControlID="Panel1"时Panel里的Button根本无法PostBack等等...
      

  10.   

    我要在C#代码下取得
    我已经吧ModalPopup 效果实现了
    我现在就是想在按钮下拿到txt
    这里老拿不到~
    我是修改别人的代码
    他们的代码很奇怪TargetControlID=“按钮ID”如果这样就报错了~~
    他们的代码很奇怪
    所以我就不管那个
    我直接要拿txt
      

  11.   

    我试过了不行~~
    他们说是我写在page里了
    不是类里
    郁闷不太明白
      

  12.   

    你那个this不是类的对象吧,可能是Page页面.
      

  13.   

    大哥
    我试过了
    真的
    真的不行TargetControlID=“按钮ID”
    我如果这样改就报错了我也不想弄成Panel1
    最后在后台不但拿不到txt连Label1也拿不到的