當Active值為"Y"時,讓"刪除"按鈕的屬性eabled='true'
Enabled='<%# Eval("Active").Equals("Y") %>'
撈資料的sql 如下:
SELECT Active, Create_Date FROM tableA
呈現資料的畫面如下:
GridView裡面逐行顯示"刪除"按鈕。若該筆資料是無效資料,則"刪除"按鈕不可用(enabled='false'); 也就是說,當Active值為"Y"時,讓"刪除"按鈕的屬性eabled='true'。
完整的GridView如下:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="gridview medium"
AllowPaging="True" AllowSorting="True" OnRowCommand="GridView1_RowCommand">
<Columns>
<asp:BoundField DataField="Active" HeaderText="有效" SortExpression="Active" />
<asp:BoundField DataField="Create_Date" HeaderText="資料創建時間" SortExpression="Create_Date"
DataFormatString="{0:yyyy/MM/dd HH:mm:ss}" />
<asp:TemplateField ShowHeader="False" Visible="false">
<ItemTemplate>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="false" CommandArgument='<%# Eval("Index") %>'
CommandName="Open">編輯</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="lnbDelete" runat="server" OnClientClick="return confirm('確定刪除?');"
CausesValidation="false" CommandArgument='<%# Eval("Index") %>' CommandName="Del"
Enabled='<%# Eval("Active").Equals("Y") %>'>刪除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
沒有資料
</EmptyDataTemplate>
</asp:GridView>
重點來了,正確的寫法是:
Enabled='<%# Eval("Active").Equals("Y") %>'
這樣寫就不對了,因為傳回的是字串,但Enable屬性要吃的是bool值,造成轉型失敗,會出現"無法將型別 'string' 轉換為 'bool'"的錯誤訊息:
If(Eval("Active") == "Y", "TRUE", "FALSE")