Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用更新面板从aspx页触发代码隐藏(aspx.cs)方法_C#_Jquery_Asp.net_Textbox_Updatepanel - Fatal编程技术网

C# 无法使用更新面板从aspx页触发代码隐藏(aspx.cs)方法

C# 无法使用更新面板从aspx页触发代码隐藏(aspx.cs)方法,c#,jquery,asp.net,textbox,updatepanel,C#,Jquery,Asp.net,Textbox,Updatepanel,我有一个显示城市名称的自动完成文本框。每当用户单击cityname时,选定的cityname将显示在文本框中。此文本框值应发送到代码隐藏方法(aspx.cs),以获取所选城市名称的更多详细信息,从而在gridview中显示结果详细信息 现在,为了传递所选值,我添加了一个文本框,用于复制所选的cityname值并将其包含在更新面板中。当文本框选择发生任何变化时,都会触发代码隐藏方法: 这是aspx页面中的代码: $(document).ready(function () {

我有一个显示城市名称的自动完成文本框。每当用户单击cityname时,选定的cityname将显示在文本框中。此文本框值应发送到代码隐藏方法(aspx.cs),以获取所选城市名称的更多详细信息,从而在gridview中显示结果详细信息

现在,为了传递所选值,我添加了一个文本框,用于复制所选的cityname值并将其包含在更新面板中。当文本框选择发生任何变化时,都会触发代码隐藏方法:

这是aspx页面中的代码:

      $(document).ready(function () {
            $('#txtName').on('change', function () {
                $('#selectedItem').html(this.value);
            }).change();
            $('#txtName').on('autocompleteselect', function (e, ui) {
                $('#selectedItem').val(ui.item.value);
            });
        });


 <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <label>Alternate Names: </label>
        <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
        &nbsp;
            <asp:Label ID="countLabel" runat="server"></asp:Label>
        <br />
        <asp:UpdatePanel ID="updatePanel1" runat="server">
            <ContentTemplate>
                <asp:TextBox ID="selectedItem" runat="server" OnTextChanged="selectedItem_TextChanged"></asp:TextBox>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="selectedItem" EventName="TextChanged" />
            </Triggers>
        </asp:UpdatePanel>
    </form>

但这种方法不会被触发。有人能帮我找出我犯的错误吗。

首先,
MessageBox.Show
不是WEBforms代码,而是WINforms。你不应该把它们混在一起。如果要在网页上显示结果,请使用javascript警报或模式

下一项是:
$('#selectedItem').html(this.value)。它应该与
val()一起使用

第三,如果您想触发对文本更改的回发,请使用
AutoPostBack=true

<asp:TextBox ID="selectedItem"  ClientIDMode="Static" runat="server" 
   OnTextChanged="selectedItem_TextChanged" AutoPostBack="true"></asp:TextBox>
然后是代码隐藏

protected void Button1_Click(object sender, EventArgs e)
{
    showResults.Text = selectedItem.Text;
}

我无法放置按钮,当我单击自动完成文本框中的值时,它必须显示gridview。如果不使用按钮,我如何实现这一点?请帮忙。你可以用css隐藏按钮。您的问题是,当使用jQuery更改
selectedItem
文本时,不会触发TextChanged事件,因此如果您不触发某些内容,将永远不会到达代码隐藏。
<asp:TextBox ID="selectedItem"  ClientIDMode="Static" runat="server" 
   OnTextChanged="selectedItem_TextChanged" AutoPostBack="true"></asp:TextBox>
<asp:UpdatePanel ID="updatePanel1" runat="server">
    <ContentTemplate>

        <asp:TextBox ID="selectedItem" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
        <asp:Label ID="showResults" runat="server" Text=""></asp:Label>

    </ContentTemplate>
</asp:UpdatePanel>

<script type="text/javascript">
    $(document).ready(function () {
        $('#txtName').on('change', function () {
            $('#selectedItem').val(this.value);
            $('#Button1').click();
        });
    });
</script>
protected void Button1_Click(object sender, EventArgs e)
{
    showResults.Text = selectedItem.Text;
}