我已经设置了一个GridView,如下所示。你可以看到每行有四个LinkButton。我想要做的是根据它们出现在哪一行使某些LinkButton可用。
<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时,如何确定该特定行中字段的值?
答案 0 :(得分:0)
建议#1:
将“if”语句包装在检查行类型的“if”中: if(e.Row.RowType == DataControlRowType.DataRow) { ...... //你的代码在这里 } 您获得空值异常,因为首先您点击标题行。行的类型很少。 在这种情况下,您只对DataRow感兴趣。
问题第2部分:
如果只使用链接按钮并单击事件,则需要在linkButton的CommandArgument或CommandName属性中传递一些数据。您可以使用CommandField或ButtonField来避免处理标识CommandArgument或CommandName中的行的数据。