Javascript: ошибка в идентификации двух разных флажков Gridview - PullRequest
0 голосов
/ 25 июля 2011

В моем веб-приложении (asp.net и код vb) у меня было два разных вида сетки.У каждого gridview есть флажок для выбора записей для пакетного обновления.И затем есть две кнопки для пакетного обновления, одна для Gridview 1 и Gridview 2.

Мне нужно проверить флажок, если пользователь установил флажок при нажатии соответствующей кнопки пакетного обновления.

мой код работает, чтоон может запросить сообщение об ошибке, если не установлен флажок при нажатии соответствующей кнопки пакетного обновления.

Но я обнаружил, что есть ошибка.Например, когда я установил флажок gridview2, а затем нажал кнопку пакетного обновления gridview1, он не может выдавать сообщение об ошибке, появляется сообщение о том, что мой javascript не может идентифицировать флажок, связанный с другим gridview.

следующий код является моим: Код Javascript:

function IsSelectedAtleastOneOT() {
    var loTable1 = document.all("<%=Gridview1.ClientID%>"); // GridView Name        
    count1 = 0;
    with (document.forms[0]) {
        for (var i = 0; i < elements.length; i++) {
            var e1 = elements[i];
e.id.substring(e.id.lastIndexOf('_') + 1, e.id.length) == 'ControlName') // This is our control Name
              if (e1.type == "checkbox" && e1.checked == true) // This is our control Name
            {
                count1 += 1;
            }
        }
    }
    if (count1 == 0) {
        alert("You have not selected any record.");
        return false;
    }
    return true;
}

function IsSelectedAtleastOneActualDur() {
    var loTable2 = document.all("<%=Gridview2.ClientID%>"); // GridView Name
    count2 = 0;
    with (document.forms[0]) {
        for (var i = 0; i < elements.length; i++) {
            var e2 = elements[i];
            if (e2.type == "checkbox" && e2.checked == true ) 
            {
                count2 += 1;
            }
        }
    }
    if (count2 == 0) {
        alert("You have not select any record.");
        return false;
    }
    return true;
}

и код ASP.net:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" PageSize ="10" AutoGenerateColumns="False"
    CellSpacing="1" DataSourceID="SqlDataSource1" CellPadding="2" 
    AllowSorting="True" DataKeyNames="ot_key" >
    <Columns>
         <asp:TemplateField>

 <ItemTemplate>
 <asp:CheckBox ID="chkSelect" runat="server"   />
 </ItemTemplate>
  </asp:TemplateField>

        <asp:HyperLinkField DataNavigateUrlFields="action,ot_key" DataNavigateUrlFormatString="{0}?id={1}"
            DataTextField="post_code" HeaderText="Staff" SortExpression="post_code" meta:resourcekey="GridView1_post_code"/>
    .......

    </Columns>
    <EmptyDataTemplate>
        <span style="font-size: 14pt; color: #990000">
        <asp:Localize runat="server" ID="text_no_record" Text="No records found." meta:resourcekey="text_no_record" />
        </span>
    </EmptyDataTemplate>
</asp:GridView>

<asp:Button ID="btnBatchUpdate" runat="server" Text="Batch Recommend/Approve Overtime Work"  
          OnClick="btnBatchUpdate_Click" 
          OnClientClick="return IsSelectedAtleastOneOT();" Visible="false" 
    Width="277px" meta:resourcekey="btnBatchUpdate" />

<asp:GridView ID="GridView2" runat="server" AllowPaging="True" AutoGenerateColumns="False"
    CellSpacing="1" DataSourceID="SqlDataSource3" CellPadding="2" AllowSorting="True" DataKeyNames="actual_dur_key"  PageSize ="10">
    <Columns>
         <asp:TemplateField>

 <ItemTemplate>
 <asp:CheckBox ID="chkSelectActual_dur" runat="server" />
 </ItemTemplate>
  </asp:TemplateField>

        <asp:HyperLinkField DataNavigateUrlFields="action,actual_dur_key" DataNavigateUrlFormatString="{0}?id={1}"
            DataTextField="post_code" HeaderText="Staff" SortExpression="post_code" meta:resourcekey="GridView2_post_code"/>
.....

    </Columns>
    <EmptyDataTemplate>
        <span style="font-size: 14pt; color: #990000">
        <asp:Localize runat="server" ID="text_no_record" Text="No records found." meta:resourcekey="text_no_record" />
        </span>
    </EmptyDataTemplate>
</asp:GridView>       

<asp:Button ID="btnBatchUpdateActualDur" runat="server" Text="Batch Recommend/Approve Actual Duration"  
          OnClick="btnBatchUpdateActualDur_Click" 
          OnClientClick="return IsSelectedAtleastOneActualDur();" 
    Visible="false" Width="276px" meta:resourcekey="btnBatchUpdateActualDur"/>

1 Ответ

0 голосов
/ 25 июля 2011

Насколько я понимаю, вы хотите проверить оба вида сетки при нажатии обеих кнопок пакета. Так что просто объедините два java-скрипта как одну функцию или просто создайте другую javascript-функцию, которая проверит обе функции и вернет правильный результат, как показано ниже

function IsSelectedBoth()
{
     if(IsSelectedAtleastOneOT() && IsSelectedAtleastOneActualDur())
        return true;
     else
        return false;
}

для обеих кнопок добавить ту же функцию onClientclick, что и IsSelectedBoth ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...