Jquery类选择器在ASP中不工作.显示数据表格

本文关键字:显示 工作 数据 数据表 表格 选择器 ASP Jquery | 更新日期: 2023-09-27 18:06:31

使用下面的代码,我试图写一些验证代码更改事件的下拉菜单"ddlAction"

我已经尝试了几种方法,例如

  1. $(".ddlAction").change(function () {

  2. $("#grdApproval").find("[id^='ddlAction']").change(function () {

  3. $("input[id*=ddlAction]").change(function ()

  4. $("input[value*=ddlAction]").change(function () {

    1. ->只工作,如果我在gridview的第一页。
c#代码:

<asp:TemplateField HeaderText="ACTION" ItemStyle-Width="10%">
    <ItemTemplate>
        <asp:DropDownList ID="ddlAction" CssClass="ddlAction" runat="server" BorderStyle="Solid" Width="150px" SkinID="GridEdit" ValidationGroup="Compensation" Enabled="true"/>
    </ItemTemplate>
</asp:TemplateField>
JQuery:
$(function () {
    $(".ddlAction").change(function () {
    //$("#grdApproval").find("[id*='ddlAction']").change(function () {
    //$("input[id*=ddlAction]").change(function () {
    //$("input[value*=ddlAction]").change(function () {
        //do something;
    });
});

页面来源:

<select name="ctl00$MainContent$grdApproval$ctl03$ddlAction" id="MainContent_grdApproval_ddlAction_1" class="ddlAction" style="color:Black;background-color:#FFFF99;border-style:Solid;font-family:Verdana;font-size:9pt;width:150px;">
<option value="97" title="-----------Select-----------">-----------Select-----------</option>
<option value="FS" title="Finalize-Submit">Finalize-Submit</option>
<option value="NMR" title="Needs More Research">Needs More Research</option>

Jquery类选择器在ASP中不工作.显示数据表格

This:

$(".ddlAction").on('change', function () {
})

应该工作。它将为页面上的每个。ddlaction下拉菜单附加一个更改事件,而不仅仅是表

您没有显示gridview id,我认为它是'#grdApproval'

所以你的代码最好改成:
$('#grdApproval').on('change','.ddlAction', function() {
})

这样它将使用事件委托。

如果你正在使用gridview的回调,或者在UpdatePanel

中包装gridview,它可能不工作其他页面。

在这两种情况下,您都需要在async-postback

之后重新设置处理程序

更新:如果你有更新面板,你需要做以下操作:

   // lets say you have function that you call to init your page:
   function myInit() {
       $('#grdApproval').on('change','.ddlAction', function() {
       }) 
   }
   // and you calling it on page load
   $(document).ready(myInit)

   // add the following line, to run the same code on pageLoaded
   // for async postback driven by UpdatePanel 
   Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(myInit);

下面的代码工作,并通过在async-postback后重新附加事件修复了问题

JQuery:

function pageLoad(sender, args) {
$(document).ready(function () {
    $(".ddlAction").change(function () {
        var HFStatusChangedId = this.id.replace("ddlAction", "HFStatusChanged");
        if (this.selectedIndex !== "97") {
            document.getElementById(HFStatusChangedId).value = "Y";
        }
    });
});

}