<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的对象的状态相匹配
请记住:服务器代码中的文本框仅处理临时构造,该构造最终将用于呈现HTML以供浏览器使用。实际文本框仅存在于浏览器中,而不存在于服务器上。当UI发生这种变化时,C#服务器代码运行的唯一方法是回发到服务器。
如果不清楚,这意味着浏览器向服务器发送新的HTTP请求,销毁本地DOM,并等待HTTP响应,以便构建新的DOM并将其呈现给屏幕。这意味着服务器正在为整个页面生成一组全新的HTML ...它不仅仅是运行那一个函数。
这真的是你想要发生的吗?大多数时候,你真的想完全用javascript来处理这项工作。
将以下内容添加到您的视图中。
<script type="text/javascript">
$("#txtAppTrackingID_App").blur(function () {
$.post("/controller/method" + id);
});
</script>
这就是我在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.
}
})
});