Проблемы с отображением LinkButton в определенных строках только внутри GridView - PullRequest
0 голосов
/ 19 июля 2011

Я настроил GridView, как изложено ниже.Вы можете видеть, что есть четыре LinkButton на строку.Что я хочу сделать, это сделать определенные LinkButtons доступными в зависимости от того, в какой строке они появляются.

<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, как определить значение полей в этой конкретной строке?

1 Ответ

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

Предложение № 1:

оберните ваш оператор "if" в "if", который проверяет тип строки: if (e.Row.RowType == DataControlRowType.DataRow) { ...... // ваш код здесь } Вы получаете исключение нулевого значения, потому что сначала вы попали в строку заголовка. Есть несколько типов строк. В этом случае вас интересует только DataRow.

По вопросу 2:

если вы используете только кнопки ссылок и события щелчков, вам нужно будет передать некоторые данные в свойствах CommandArgument или CommandName кнопки link. Вместо этого вы можете использовать CommandField или ButtonField, чтобы избежать передачи данных, идентифицирующих строку в CommandArgument или CommandName.

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