2011-07-25 8 views
0

私のWebアプリケーション(asp.net & vbコード)では、私は2つの異なるgridviewを持っていました。 各gridviewには、バッチ更新用のレコードを選択するチェックボックスがあります。 次に、バッチ更新のための2つのボタンがあります.1つはGridview 1とGridview 2です。Javascript:2つの異なるGridviewチェックボックスのエラー

対応するバッチ更新ボタンをクリックすると、チェックボックスをオンにする必要があります。

私のコードは、対応するバッチ更新ボタンをクリックするとチェックボックスが選択されていない場合、エラーメッセージを表示することができます。

しかし、私はエラーが見つかりました。たとえば、gridview2チェックボックスをチェックしてからgridview1バッチ更新ボタンをクリックすると、エラーメッセージが表示されず、別のグリッドビューに関連するチェックボックスが表示されないようです。

次は私のコードです: 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"/> 

答えて

0

、あなたはをクリックするだけで、両方のグリッドビューを検証します両方のバッチボタン。だから、ただ一つの機能として、2つのJavaスクリプトを組み合わせたりするだけの機能の両方をチェックし、ボタンがIsSelectedBoth(同じonClientclickの機能を追加し、両方のための

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

以下のような有効な結果を返します別のjavascript関数)

を作成
関連する問題