2015-06-10 2 views
1

Я использую gridview WebForms, и я реализую функцию редактирования/обновления через js. Проблема в том, что я не хочу кнопку редактирования для каждой строки. Есть ли способ настроить поле asp: template, чтобы моя кнопка редактирования отображалась только в том случае, если строка данных соответствует определенному условию?Если инструкция с классической привязкой asp

<asp:TemplateField HeaderText="ETA"> 
    <ItemTemplate> 
     <span id="jsEDateDataValue<%# Eval("ID") %>" 
      class="displayInline"> 
      <%# Eval("ETA") %> 
     </span> 

Ниже приведенный выше код, у меня есть HTML входов скрытых C и установить, чтобы показать с помощью кнопки редактирования.

Другими словами, как бы реализовать эту линию psuedocode?

<%# 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 
Смежные вопросы