【问题标题】:Problems making LinkButton visible in certain rows only within a GridView使 LinkBut​​ton 仅在 GridView 中的某些行中可见的问题
【发布时间】:2011-07-19 10:42:40
【问题描述】:

我已设置如下所示的 GridView。您可以看到每行有四个 LinkBut​​ton。我想要做的是使某些 LinkBut​​tons 可用,具体取决于它们出现在哪一行。

<asp:GridView ID="FormsGrid" runat="server" Width="657px" Height="250px" DataKeyNames="FORM_NAME,FORM_ACCESS,STATUS,ID"
               AutoGenerateColumns="False" DataSourceID="SqlDataSource1" >
             <Columns>
                 <asp:BoundField DataField="DEADLINE_DATE" HeaderText="Date" DataFormatString="{0:d}"
                     SortExpression="DEADLINE_DATE" />
                 <asp:BoundField DataField="FORM_NAME" HeaderText="Event" 
                     SortExpression="FORM_NAME" >                     
                     <ItemStyle Width="240px" />
                 </asp:BoundField>
                 <asp:BoundField DataField="COMPULSORY" HeaderText="Compulsory?" 
                     SortExpression="COMPULSORY" />
                 <asp:BoundField DataField="FORM_NO" HeaderText="Form" 
                     SortExpression="FORM_NO" />     
                 <asp:TemplateField HeaderText="Access">
                     <ItemTemplate>
                         <asp:LinkButton ID="FormLinkBtn" runat="server"  
                             onclick="FormLinkBtn_Click">Form Link</asp:LinkButton>
                         <br />
                         <asp:LinkButton ID="NotReqBtn" runat="server"  
                             onclick="NotReqBtn_Click">Not Required</asp:LinkButton>
                         <br />
                         <asp:LinkButton ID="DnLoadBtn" runat="server"  
                             onclick="DnLoadBtn_Click">Download Pdf</asp:LinkButton>
                         <br />
                         <asp:LinkButton ID="UploadBtn" runat="server"  
                             onclick="UploadBtn_Click">Upload Pdf</asp:LinkButton>                             
                     </ItemTemplate>
                 </asp:TemplateField>
                 <asp:BoundField DataField="STATUS" HeaderText="Completed?" 
                     SortExpression="STATUS" />
                 <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" Visible="False" />
             </Columns>
         </asp:GridView>

当我尝试使它们不可见时,使用 FormsGrid_RowDataBound 中的以下代码,它不起作用并出现空值错误。

if e.Row.Cells(4).Text = "1" then
   Dim FLbtn As LinkButton = FormsGrid.FindControl("FormLinkBtn")
   FLbtn.Visible = True
   Dim NRbtn As LinkButton = FormsGrid.FindControl("NotReqBtn")
   NRbtn.Visible = False
   Dim DLbtn As LinkButton = FormsGrid.FindControl("DnLoadBtn")
   DLbtn.Visible = False
   Dim ULbtn As LinkButton = FormsGrid.FindControl("UploadBtn")
   ULbtn.Visible = False
end if

另外,当我点击说 FormLinkBtn 时,我如何确定该特定行中字段的值?

【问题讨论】:

  • 第二个问题使用e。 :)

标签: asp.net vb.net visual-studio-2008 templates gridview


【解决方案1】:

建议 #1:

将您的“if”语句包装在检查行类型的“if”中: if (e.Row.RowType == DataControlRowType.DataRow) { ......//你的代码在这里 } 你得到空值异常是因为你首先点击了标题行。行的类型很少。 在这种情况下,您只对 DataRow 感兴趣。

关于问题第 2 部分:

如果您只使用链接按钮和单击事件,则需要在链接按钮的 CommandArgument 或 CommandName 属性中传递一些数据。您可以改用 CommandField 或 ButtonField 来避免处理传递数据以识别 CommandArgument 或 CommandName 中的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多