我在VS2005中用了AJAX的提示框控件ConfirmButtonExtender1
前台:
<cc1:ConfirmButtonExtender ID="ConfirmButtonExtender1" runat="server" TargetControlID="LinkButton1"  Enabled="True">
后台:
protected void Page_Load(object sender, EventArgs e)
    {
        ConfirmButtonExtender1.ConfirmText = "确定吗?\n123456789";
    }
protected void LinkButton1_Click(object sender, EventArgs e)
    {
        //如何使ConfirmButtonExtender1提示详细信息?
        TextBox1.Text = "LinkButton1你单击,出现了选择提示框";
    }//这样单击LinkButton1出现提示框“确定”能执行,TextBox1得到:LinkButton1你单击,出现了选择提示框。
现在我想在单击LinkButton1时,动态改变ConfirmButtonExtender1.ConfirmText的值,使之显示要执行的详细提示,应如何设置?
后台定义一个变量,如何在单击LinkButton1时即时改变这个变量的值?

解决方案 »

  1.   

    protected void Page_Load(object sender, EventArgs e)
    {
            if (!IsPostBack)
                ConfirmButtonExtender1.ConfirmText = "确定吗?\n123456789";
            else
                ConfirmButtonExtender1.ConfirmText = "详细信息?";
    }
      

  2.   

    这样达不到要求呢,要动态显示,例如:
    删除数据库中的“李三”它就提示“你确实要删除: \n李三\n吗?
    删除数据库中的“张四”它就提示“你确实要删除: \n张四\n吗?
    删除数据库中的“陈五”它就提示“你确实要删除: \n陈五\n吗?
    ......
      

  3.   

    你可以用DynamicPopulate到后台去得到提示信息,代码看起来大概是这个样子:前台:<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager><asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
    <act:ConfirmButtonExtender ID="ConfirmButtonExtender1" runat="server" TargetControlID="LinkButton1" Enabled="True" /><asp:HiddenField ID="ConfirmText" runat="server" />
    <act:DynamicPopulateExtender ID="DynamicPopulateExtender1" runat="server" TargetControlID="ConfirmText" ServiceMethod="GetConfirmText" /><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><script type="text/javascript">
    var cbb = AjaxControlToolkit.ConfirmButtonBehavior.prototype;
    cbb._old_onClick = cbb._onClick;
    cbb._onClick = function(e) {
    this.dp.populate();
    e.preventDefault();
    this.e = e;
    return false;
    }var cb;
    Sys.Application.add_load(function() {
    cb = $find("ConfirmButtonExtender1");
    cb.dp = $find("DynamicPopulateExtender1");
    cb.dp.add_populated(function() {
    cb._ConfirmTextValue = ConfirmText.value;
    cb._old_onClick(cb.e);
    });
    cb._oldScript = LinkButton1.href;
    });
    </script>
    后台: protected void Page_Load(object sender, EventArgs e)
    {
    ConfirmButtonExtender1.ConfirmText = "确定吗?\n123456789";
    } [System.Web.Services.WebMethod]
    public static string GetConfirmText(string contextKey)
    {
    return "确定吗?" + DateTime.Now + "XXXXXXXXX";
    } protected void LinkButton1_Click(object sender, EventArgs e)
    {
    TextBox1.Text = "LinkButton1你单击,出现了选择提示框";
    }
    这个代码有点繁琐,如果你用AjaxPro就可以简单多了。
      

  4.   

    多谢!
    我的VS2005都没有DynamicPopulate这个控件。
      

  5.   

    DynamicPopulate 和 ConfirmButton 都是 AjaxControlToolkit 一套里面的东西,你有 ConfirmButton, 怎会没有 DynamicPopulate ?
      

  6.   

    多谢我的只有:DynamicPopulateExtender1,这个是不是同这个DynamicPopulate?
    现在累了,明天我试试。
      

  7.   

    新建一个test.aspx文件,把下面这段程序贴进去,编译后运行,打开test.aspx页面就可以看到了
    <%@ Page Language="C#"  %>
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="act" %><html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>test</title>
    </head>
    <body>
    <form id="form1" runat="server"><asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager><asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
    <act:ConfirmButtonExtender ID="ConfirmButtonExtender1" runat="server" TargetControlID="LinkButton1" Enabled="True" /><asp:HiddenField ID="ConfirmText" runat="server" />
    <act:DynamicPopulateExtender ID="DynamicPopulateExtender1" runat="server" TargetControlID="ConfirmText" ServiceMethod="GetConfirmText" /><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><script type="text/javascript">
    var cbb = AjaxControlToolkit.ConfirmButtonBehavior.prototype;
    cbb._old_onClick = cbb._onClick;
    cbb._onClick = function(e) {
        this.dp.populate();
        e.preventDefault();
        this.e = e;
        return false;
    }var cb;
    Sys.Application.add_load(function() {
        cb = $find("ConfirmButtonExtender1");
        cb.dp = $find("DynamicPopulateExtender1");
        cb.dp.add_populated(function() {
            cb._ConfirmTextValue = ConfirmText.value;
            cb._old_onClick(cb.e);
        });
        cb._oldScript = LinkButton1.href;
    });
    </script><script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
    ConfirmButtonExtender1.ConfirmText = "确定吗?\n123456789";
    } protected void LinkButton1_Command(object sender, CommandEventArgs e)
    {
    string friendName = e.CommandArgument.ToString();
    TextBox1.Text = friendName;
    } [System.Web.Services.WebMethod]
    public static string GetConfirmText(string contextKey)
    {
    return "确定吗?" + DateTime.Now + "XXXXXXXXX";
    } protected void LinkButton1_Click(object sender, EventArgs e)
    {
    TextBox1.Text = "LinkButton1你单击,出现了选择提示框";
    }
    </script>
    </form>
    </body>
    </html>
      

  8.   

    创建控件时出错-ConfirmButtonExtender1
    创建控件时出错-DynamicPopulateExtender1
      

  9.   

    多谢您jshi123,我直接用你的代码编译时出现如下错误:
    错误1未能加载文件或程序集“AjaxControlToolkit”或它的某一个依赖项。系统找不到指定的文件。 E:\ASP.NET测试\AJAX\1\test.aspx 2

    错误2未知的服务器标记“act:ConfirmButtonExtender”。E:\ASP.NET测试\AJAX\1\test.aspx 15错误3未知的服务器标记“act:DynamicPopulateExtender”。 E:\ASP.NET测试\AJAX\1\test.aspx 18

    错误4元素“ConfirmButtonExtender”不是已知元素。原因可能是网站中存在编译错误。 E:\ASP.NET测试\AJAX\1\test.aspx 15 6 E:\...\1\错误5元素“DynamicPopulateExtender”不是已知元素。原因可能是网站中存在编译错误。 E:\ASP.NET测试\AJAX\1\test.aspx 18 6 E:\...\1\

      

  10.   

    缺少AjaxControlToolkit引用, 右键点“解决方案资源管理器”里的“引用”,选“添加引用”,在弹出对话框里选“浏览”,找到你安装AjaxControlToolkit目录里的"AjaxControlToolkit.dll",确定。你的程序原来就有用到ConfirmButton啊,这个能工作吗?如果可以的话把测试页面加到你原来的项目里就可以了啊
      

  11.   

    VS2005只支持AJAX control toolkit1.0VS2008才支持2.0-3.0的。我不太清楚,是不是1.0里面没有这个ConfirmButtonExtender?
      

  12.   

    jshi123:您好。
    你代码可以编译,一运行它就提示网页有错误,而且不能动态显示提示信息。
    这样达不到要求呢,要动态显示提示信息,我再作如下描述:
    TextBox1是用户名输入框,
    我输入了“李三”确定保存时(即单击LinkButton1)它就提示“你确实要保存: \n李三\n吗?” 
    如果输入了“张四”确定保存时(即单击LinkButton1)它就提示“你确实要保存: \n张四\n吗?” 
    又或输入了“陈五”确定保存时(即单击LinkButton1)它就提示“你确实要保存: \n陈五\n吗?” 
    ......
      

  13.   

    如果是这样,根本不需要用后台进行处理,在前台用js就可以了<%@ Page Language="C#" %><html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>test</title>
    </head>
    <body>
    <form id="form1" runat="server">用户名:
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" OnClientClick="return confirmSave()">保存</asp:LinkButton>
    <script type="text/javascript">
    function confirmSave() {
    var username = document.getElementById("TextBox1");
    if (!username.value) {
    alert("请输入用户名");
    return false;
    }
    return confirm("你确实要保存: \n" + username.value + "\n吗?");
    }
    </script><script runat="server">
    void LinkButton1_Click(object sender, EventArgs e)
    {
    // 保存数据库
    Label1.Text = TextBox1.Text + "保存成功";
    }
    </script>
    <br /><asp:Label ID="Label1" runat="server" ForeColor="Red"></asp:Label></form>
    </body>
    </html>