当不再关注asp:TextBox时,获取一个C#函数来触发

问题描述 投票:0回答:3

 <div id="pm-search" class="main-box-body-only min-padding clearfix">
                            <div class="searchFormNoBox span12">
                                <span>
                                    <label>App Tracking ID</label>
                                    <asp:TextBox ID="txtAppTrackingID_App" runat="server" Width="100px"  OnTextChanged="txtAppTrackingID_App_TextChanged" AutoPostBack="True"></asp:TextBox>
                                </span>
                                <span>
                                    <label>Old Status</label>
                                    <asp:DropDownList ID="ddlOldStatus_App" runat="server" AutoPostBack = "true" Width="170px">
                                        <asp:ListItem Value="" Selected="True"></asp:ListItem>
                                        <asp:ListItem Value="AWAITING_CONF">AWAITING_CONF</asp:ListItem>
                                        <asp:ListItem Value="AWAITING_DUPLICATE_FILE">AWAITING_DUPLICATE_FILE</asp:ListItem>
                                        <asp:ListItem Value="CANCELLED">CANCELLED</asp:ListItem>
                                        <asp:ListItem Value="COMPLETE">COMPLETE</asp:ListItem>
                                        <asp:ListItem Value="CONFIRM_APPROVED">CONFIRM_APPROVED</asp:ListItem>
                                        <asp:ListItem Value="CONFIRM_REJECTED">CONFIRM_REJECTED</asp:ListItem>
                                        <asp:ListItem Value="COPY_FINISHED">COPY_FINISHED</asp:ListItem>
                                        <asp:ListItem Value="COPY_STARTED">COPY_STARTED</asp:ListItem>
                                        <asp:ListItem Value="DUPLICATE_FILE_APPROVED">DUPLICATE_FILE_APPROVED</asp:ListItem>
                                        <asp:ListItem Value="DUPLICATE_FILE_REJECTED">DUPLICATE_FILE_REJECTED</asp:ListItem>
                                        <asp:ListItem Value="EMAIL_READY">EMAIL_READY</asp:ListItem>
                                        <asp:ListItem Value="EMAIL_COMPLETE">EMAIL_COMPLETE</asp:ListItem>
                                        <asp:ListItem Value="ERROR">ERROR</asp:ListItem>
                                        <asp:ListItem Value="FILE_PROCESSING">FILE_PROCESSING</asp:ListItem>
                                        <asp:ListItem Value="FILE_READY">FILE_READY</asp:ListItem>
                                        <asp:ListItem Value="FILE_RECEIVED">FILE_RECEIVED</asp:ListItem>
                                        <asp:ListItem Value="HOLD">HOLD</asp:ListItem>
                                        <asp:ListItem Value="PROCESSING_APP">PROCESSING_APP</asp:ListItem>
                                        <asp:ListItem Value="PROCESSING_QC">PROCESSING_QC</asp:ListItem>
                                        <asp:ListItem Value="QUICKCHANGE_READY">QUICKCHANGE_READY</asp:ListItem>
                                        <asp:ListItem Value="READY">READY</asp:ListItem>
                                        <asp:ListItem Value="SCHEDULED">SCHEDULED</asp:ListItem>
                                        <asp:ListItem Value="WEBVIEW_READY">WEBVIEW_READY</asp:ListItem>
                                    </asp:DropDownList>
                                </span>
    protected void txtAppTrackingID_App_TextChanged(object sender, EventArgs e)
    {
        applicationTrackingID = txtAppTrackingID_App.Text;
        ApplicationSettings applicationStatus = new ApplicationSettings(appTrackingID);
        appStatus = applicationStatus.StatusCode; // get the full status code name

        ddlOldStatus_App.SelectedValue = appStatus;

    }

我想要发生的是,当文本框“txtAppTrackingID_App”不再是焦点时,上述函数将运行。

该功能的目的是从下拉菜单中选择一个值,该值与具有该ID的对象的状态相匹配

c# asp.net onblur textchanged
3个回答
1
投票

请记住:服务器代码中的文本框仅处理临时构造,该构造最终将用于呈现HTML以供浏览器使用。实际文本框仅存在于浏览器中,而不存在于服务器上。当UI发生这种变化时,C#服务器代码运行的唯一方法是回发到服务器。

如果不清楚,这意味着浏览器向服务器发送新的HTTP请求,销毁本地DOM,并等待HTTP响应,以便构建新的DOM并将其呈现给屏幕。这意味着服务器正在为整个页面生成一组全新的HTML ...它不仅仅是运行那一个函数。

这真的是你想要发生的吗?大多数时候,你真的想完全用javascript来处理这项工作。


0
投票

将以下内容添加到您的视图中。

<script type="text/javascript">
    $("#txtAppTrackingID_App").blur(function () {
        $.post("/controller/method" + id);
    });
</script>

0
投票

这就是我在WebForms中完成它的方式,听起来你是那里的一部分(使用WebMethod)。

在PageNameGoesHere.aspx中创建WebMethod:

[WebMethod]
public static bool DoSomething(int id)
{
  // do something on id
}

创建JavaScript以通过Ajax调用它(未经测试用于模糊,因为我点击了它)。客观上C对模糊事件的利用可能在这里是正确的,不确定:

$('form').on('blur', '#txtAppTrackingID', function() {
  var data = new Object();
  data['id'] = 12;

  $.ajax({
    url: 'PageNameGoesHere.aspx/DoSomething',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(data),
    success: function (response) {
      // whatever you want to do on success.
    },
    error: function (response) {
      // probably some messaging something went wrong.
    }
  })
});
© www.soinside.com 2019 - 2024. All rights reserved.