2011-11-03 24 views
1

我有一個帶有4個可見列的gridview,第一個可見列包含一個評估ID的鏈接按鈕,第四個可見列包含一個複選框。嵌入在gridview中的linkbutton如何檢查同一行上的嵌入複選框?

最好用javascript我想檢查相應的複選框(同一行),當點擊鏈接按鈕時取消選中gridview中的所有其他複選框。

<asp:GridView ID="gdvSalesOrder" runat="server" Width="100%" HorizontalAlign="Center" 
          AutoGenerateColumns="false" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt" 
          SelectedRowStyle-CssClass="alt-backcolour"> 
          <Columns> 
           <asp:TemplateField Visible="false"> 
            <ItemTemplate> 
             <asp:TextBox ID="txtID" runat="server" Text='<%# Eval("Id") %>'></asp:TextBox> 
            </ItemTemplate> 
           </asp:TemplateField> 
           <asp:CommandField Visible="false" ShowSelectButton="true" /> 
           <asp:TemplateField HeaderText="ORDER NUMBER" ItemStyle-Width="31%" ItemStyle-HorizontalAlign="Center"> 
            <HeaderStyle HorizontalAlign="Center" /> 
            <ItemTemplate> 
             <asp:LinkButton ID="lnkOrderNumber" ClientIDMode="Static" runat="server" CommandName="select" 
              CommandArgument='<%# Eval("OrderNumber") %>' Text='<%# Eval("OrderNumber") %>'></asp:LinkButton> 
            </ItemTemplate> 
           </asp:TemplateField> 
           <asp:TemplateField HeaderText="ACCOUNT REF" ItemStyle-Width="31%" ItemStyle-HorizontalAlign="Center"> 
            <HeaderStyle HorizontalAlign="Center" /> 
            <ItemTemplate> 
             <asp:Label ID="lblCustomerAccountReference" runat="server" Text='<%# Eval("CustomerAccountReference") %>'></asp:Label> 
            </ItemTemplate> 
           </asp:TemplateField> 
           <asp:TemplateField HeaderText="QUOTED DUE DATE" ItemStyle-Width="31%" ItemStyle-HorizontalAlign="Center"> 
            <HeaderStyle HorizontalAlign="Center" /> 
            <ItemTemplate> 
             <asp:Label ID="lblQuotedDueDate" runat="server" Text='<%# Eval("QuotedDueDate", "{0:d}") %>'></asp:Label> 
            </ItemTemplate> 
           </asp:TemplateField> 
           <asp:TemplateField ItemStyle-Width="6%" ItemStyle-HorizontalAlign="Center"> 
            <HeaderStyle HorizontalAlign="Center" /> 
            <HeaderTemplate> 
             <input id="chkAll" type="checkbox" onclick="javascript:SelectAllCheckboxes(this);" /> 
            </HeaderTemplate> 
            <ItemTemplate> 
             <asp:CheckBox ID="chkSelect" runat="server" /> 
            </ItemTemplate> 
           </asp:TemplateField> 
          </Columns> 
          <EmptyDataTemplate> 
           No Sales Orders Found. 
          </EmptyDataTemplate> 
         </asp:GridView> 

回答

1

我會用OnCommand代替OnClick,並使用CommandArgument在項指數經過:

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:LinkButton ID="LinkButton1" runat="server" Text="Click" CommandArgument='<%# Container.ItemIndex %>' OnCommand="LinkButton1_Command" ... /> 
    </ItemTemplate> 
</asp:TemplateField> 

代碼隱藏:

protected void LinkButton1_Command(object sender, CommandEventArgs e) 
{ 
    CheckBox chk = GridView1.Rows[(int)e.CommandArgument].FindControl("CheckBox1") as CheckBox; 
    if (chk != null) 
     chk.Checked = true;  
} 
0

在你Grid_RowDataBound()事件處理程序,您可以在按鈕上附加客戶端onClick事件以檢查複選框。

在該方法中,您可以訪問網格中的按鈕以及chkSelect複選框的ClientID。您可以對此進行硬編碼或將參數傳遞給JS函數。

lnkOrderNumber.OnClientClick = "CheckOnlyOne('"+chkSelect.ClientID+"');";

然後JS:

function CheckOnlyOne(checkboxID) 
{ 
    // TODO: uncheck all checkboxes 
    document.getElementById(checkboxID).checked = true; 
} 
相關問題