2014-10-17 86 views
0

我有这样定义一个GridView:防止GridView控件OnRowCommand执行特定的GridView列Asp.net

<asp:GridView ID="GridView_Messages" runat="server" AutoGenerateColumns="False" PageSize="5" CellPadding="4" AllowPaging="true" Width=100% AllowSorting="true" OnSorting="GridView_Messages_Sorting" 
         ForeColor="#333333" GridLines="None" OnRowDataBound="GridView_Messages_OnRowDataBound" OnPageIndexChanging="GridView_Messages_PageIndexChanged" OnRowCommand="GridView_Messages_OnRowCommand" EmptyDataText="<%$ Resources:Localization, NoMsg %>"> 
         <%--CssClass="Grid" AlternatingRowStyle-CssClass="alt" PagerStyle-CssClass="pgr"--%> 
         <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
         <Columns> 
          <asp:TemplateField HeaderText="" ItemStyle-Width="75" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle"> 
           <HeaderTemplate> 
            <asp:CheckBox ID="allchk" runat="server" /> 
           </HeaderTemplate> 
           <ItemTemplate> 
            <asp:CheckBox ID="check" Text="" TextAlign="Right" AutoPostBack="false" Checked="false" runat="server" OnCheckedChanged="GridView_Messages_CheckedChanged"/> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="MessageID" ItemStyle-Width="150" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" Visible="false"> 
           <ItemTemplate> 
            <asp:Label ID="GridView_Messages_lblMessageID" runat="server" Text='<%# Eval("MessageID") %>'/> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="<%$ Resources:Localization, Title2 %>" ItemStyle-Width="150" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" SortExpression="it.Title"> 
           <ItemTemplate> 
            <asp:Label ID="GridView_Messages_lblTitle" runat="server" Text='<%# Eval("Title") %>'/> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Description" ItemStyle-Width="150" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" Visible="false"> 
           <ItemTemplate> 
            <asp:Label ID="GridView_Messages_lblDescription" runat="server" Text='<%# Eval("Description")%>'/> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="FromUserID" ItemStyle-Width="150" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" Visible="false"> 
           <ItemTemplate> 
            <asp:Label ID="GridView_Messages_lblFromUserID" runat="server" Text='<%# Eval("FromUserID")%>'/> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="<%$ Resources:Localization, From %>" ItemStyle-Width="150" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" SortExpression="it.UserName"> 
           <ItemTemplate> 
            <asp:Label ID="GridView_Messages_lblFromUserName" runat="server" Text='<%# Eval("UserName")%>'/> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Notes" ItemStyle-Width="150" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" Visible="false"> 
           <ItemTemplate> 
            <asp:Label ID="GridView_Messages_lblNotes" runat="server" Text='<%# Eval("Notes") %>'/> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="<%$ Resources:Localization, IsRead %>" Visible="false" ItemStyle-Width="150" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" SortExpression="it.IsRead"> 
           <ItemTemplate> 
            <asp:Label ID="GridView_Messages_lblIsRead" runat="server" Text='<%# Eval("IsRead") %>'/> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="<%$ Resources:Localization, TimeSent %>" ItemStyle-Width="150" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" SortExpression="it.SentDateTime"> 
           <ItemTemplate> 
            <asp:Label ID="GridView_Messages_lblDateTime" runat="server" Text='<%# Eval("SentDateTime") %>'/> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField> 
           <ItemTemplate> 
            <asp:LinkButton ID="Msg_lnkBtnClk" runat="server" CommandName="SingleClick" Text="click" 
             Visible="true" CssClass="hidden"/> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField> 
           <ItemTemplate> 
            <asp:LinkButton ID="Msg_lnkBtnDblClk" runat="server" CommandName="DoubleClick" Text="dblClick" 
             Visible="true" CssClass="hidden"/> 
           </ItemTemplate> 
          </asp:TemplateField> 
         </Columns> 
         <EditRowStyle BackColor="#999999" /> 
         <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
         <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
         <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
         <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
         <SelectedRowStyle BackColor="#C7B88D" /> 
        </asp:GridView> 

我不希望我的OnRowCommand执行我的GridView的第一列。其实我不希望我的事件发生时,点击我的一些复选框。如何确定我点击了一个复选框还是点击了GridView中的其他位置?在WPF中,我可以使用e.OriginalSource属性,但在这里是不可能的。

回答

1

使用JQuery
如果您尚未加入jQuery来你的页面,在此标记添加到您的网页的头部分:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

这是实际的代码。在.aspx页面的部分中的链接后添加此链接:

<script type="text/javascript"> 
     $(function(){ 
      $('#<%= GridView_Messages.ClientID %> input[type="checkbox"]') 
      .click(function(event){ 
       event.stopPropagation(); 
       event.preventDefault(); 
      }) 
     }); 
</script> 
+0

这不起作用。我是否需要以某种方式来定义我试图阻止的事件的类型?我不完全明白这是如何工作的。 – Stojdza 2014-10-17 07:21:32

+0

你将不得不把这个代码放在你的.aspx文件中,它使用asp.net服务器标签。你在控制台遇到什么错误? – P5Coder 2014-10-17 07:22:16

+0

如何在aspx文件中调用此函数?我究竟需要把它放在哪里? – Stojdza 2014-10-17 07:35:30