两个决定只需一个按钮

时间:2009-11-27 11:40:28

标签: c# asp.net javascript

我现在的问题是我需要点击2次才能使用正确的文字进行搜索。有没有办法解决我发送的内容并更新它?还有其他解决方案吗?

您好!!

我有2个radiobutton决定使用什么搜索引擎(谷歌或我的),我有1个按钮,将提交一个文本,用于在2个搜索引擎之一中搜索。当我尝试进行谷歌搜索时,第一次它只是打开新窗口,当我点击第二次,它打开谷歌窗口,我想要搜索的单词,如果我尝试进行搜索,它做两个搜索。我做错了什么?我如何以正确的方式工作?

  <table><tr>
  <td>
      <asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>
      <asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="Button1_Click" UseSubmitBehavior="true"/>
  </td>
  </tr>
  <tr align="center">
  <td>
      <input id="Search1" value="one" type="radio" runat="server" name="sitesearch" />Site Name
      <input id="Search2" value="two" type="radio" runat="server" name="sitesearch" />           
      <img src="http://www.google.com/images/poweredby_transparent/poweredby_FFFFFF.gif" alt="Google" />
  </td>      
  </tr>
</table>

然后我......

protected void Button1_Click(object sender, EventArgs e){

        if (Search1.Checked)
        {
            //My Search
            Response.Redirect(Request.UrlReferrer.AbsolutePath +...
        }
        else if (Search2.Checked)
        {
            //Google search
            btnSearch.Attributes.Add("OnClick", "window.open('http://www.google.com/search?q=" + Regex.Replace(TextB.Text, " ", "+") + "','_blank');");
        }
    }

......我有这个......

TextBox TextB;    
HtmlInputRadioButton radioBSite;
Button btnSearch;
HtmlInputRadioButton radioBGoogle;

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    TextB = (TextBox)FindControl("TextBox1");
    TextB.Text = Request["find"];
    radioBSite = (HtmlInputRadioButton)FindControl("Search1");
    radioBSite.Checked = true;
    radioBGoogle = (HtmlInputRadioButton)FindControl("Search2");

    btnSearch = (Button)FindControl("btnSearch");
    btnSearch.Click += new EventHandler(Button1_Click);
    .
    .
}

3 个答案:

答案 0 :(得分:1)

问题在于这行代码:

btnSearch.Attributes.Add("OnClick", "window.open('http://www.google.com/search?q=" + Regex.Replace(TextB.Text, " ", "+") + "','_blank');");

您正在添加一个客户端OnClick,它将在新窗口中打开搜索(_blank目标)。

如果您这样做:

Response.Redirect("http://www.google.com/search?q=" + TextB.Text);

事情会像你期望的那样奏效。

答案 1 :(得分:0)

而不是输入控件使用asp:RadioButton,autopost属性为true,并在设计时创建并分配事件

答案 2 :(得分:0)

编辑:更新了代码以打开搜索窗口。

以下内容对您有所帮助。它没有执行搜索,但您应该能够获得一般的想法。 ASPX:

 <form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager" runat="server"></asp:ScriptManager>
<div>
    <asp:TextBox ID="SearchFor" runat="server"></asp:TextBox><br />
    <asp:RadioButton ID="RadioGoogle" runat="server" GroupName="SearchSelect" Text="Google" />
    <asp:RadioButton ID="RadioCustom" runat="server" GroupName="SearchSelect" Text="Custom" /><br />
    <asp:Button ID="Search" runat="server" onclick="Search_Click" Text="Search" />
</div>    
</form>

代码隐藏:

protected void Search_Click(object sender, EventArgs e)
        {
             if (RadioGoogle.Checked)
            GoogleSearch(SearchFor.Text);
        if (RadioCustom.Checked)
            Response.Write("Search Custom for " + SearchFor.Text);
        }
private void GoogleSearch(string searchFor)
        {
            string targetURL = "http://www.google.com/search?q=" + Regex.Replace(searchFor, " ", "+");
            string clientScript = "window.open('" + targetURL + "');";
            ClientScript.RegisterStartupScript(GetType(), "popup", clientScript, true);
        }

交换Response.Write以调用执行搜索的方法。