我正在使用WebForms gridview,我正在通过js实现编辑/更新功能。问题是我不希望每行都有一个编辑按钮。有没有办法配置asp:template字段,以便我的编辑按钮只显示该数据行是否满足某个条件?
<asp:TemplateField HeaderText="ETA">
<ItemTemplate>
<span id="jsEDateDataValue<%# Eval("ID") %>"
class="displayInline">
<%# Eval("ETA") %>
</span>
在上面的代码下面,我有css隐藏的html输入,并设置为通过编辑按钮显示。
换句话说,我该如何实现这个伪代码行?
<%# if (Eval("Status") == "closed" || Eval("Status") == "open") Response.Write("<input type='text' />"); %>
答案 0 :(得分:0)
这可能不是你想要的答案,但它可能会让你接近,应该考虑更多的伪代码而不是真正的工作代码。
<ItemTemplate>
<asp:Panel ID="jsEDateDataValue" runat="server" CssClass="displayInline">
<asp:TextBox ID="txtYourBox" runat="server" Visible="False"></asp:TextBox>
</asp:Panel>
</ItemTemplate>
Protected Sub YourGrid_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles YourGrid.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim jsEDateDataValue = DirectCast(e.Row.FindControl("jsEDateDataValue"), Panel)
Dim txtYourBox = DirectCast(e.Row.FindControl("txtYourBox"), TextBox )
jsEDateDataValue.Attributes.Add("data-id", e.Row.RowIndex) 'recreating something for javascript to use instead of jsEDateDataValue1, jsEDateDataValue2, jsEDateDataValue3, etc.
If e.Row.DataItem("Status") = "closed" OR e.Row.DataItem("Status") = "open"" Then
txtYourBox.Visible = True
End If
End If
End Sub