动态修改网格视图元素的类

本文关键字:元素 视图 修改 网格 动态 | 更新日期: 2023-09-27 18:36:30

我有一个网格视图:

<asp:GridView runat="server" ID="gv_patientMeds" Width="100%" AutoGenerateColumns="False" GridLines="Both" OnRowDataBound="gv_patientMeds_onRowDataBound">
    <Columns>
        <asp:TemplateField HeaderText="Edit" HeaderStyle-HorizontalAlign="Center">
            <ItemTemplate>
                <asp:Button ID="lb_editPatient" runat="server" CssClass="<%# Eval(Convert.ToInt32(Eval("recordId")) != 0 ? "btn-active" : "btn-inactive"); %>" Text="Delete" OnClientClick="SubmitDeleteMedicationChange(<%# Eval("updateClinicVisit_recordIdForDelete") %>);" UseSubmitBehavior = "false" />
            </ItemTemplate>
            <ItemStyle HorizontalAlign="Center" />
        </asp:TemplateField>
    </Columns>
</asp:GridView>

我像这样将数据加载到其中:

gv_patientMeds.DataSource = theDataToBindInPopup;
gv_patientMeds.DataBind();

theDataToBindInPopup只是一个自定义对象的列表。

如您所见,我正在尝试使用某些逻辑分配删除按钮的类,其中 recordId 是 DataToBindInPopup 列表中某个对象的属性。ASP不喜欢这样。我收到"服务器标签格式不正确"。

在这种情况下,如何使用逻辑分配按钮的类?

提前谢谢。

动态修改网格视图元素的类

尽管 Ganesh 和 fnostro 建议你可以工作,但你也可以在代码中设置你的逻辑:

protected void gv_patientMeds_onRowDataBound(object sender, GridViewRowEventArgs e)
        {   
            //Get data row view
            DataRowView drview = e.Row.DataItem as DataRowView;
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //Find dropdown control
                Button btn= (Button)e.Row.FindControl("lb_editPatient");
                btn.CssClass= Convert.ToInt32(drview["recordId"]) != 0 ? "btn-active" : "btn-inactive"; 
            }
        }

将你lb_editPatient按钮替换为这个

将双引号括在单引号内

<asp:Button ID="lb_editPatient" runat="server" 
CssClass='<%# (Convert.ToInt32(Eval("recordId")) != 0 ? "btn-active" : "btn-inactive") %>' Text="Delete" 
OnClientClick='SubmitDeleteMedicationChange(<%# Eval("updateClinicVisit_recordIdForDelete") %>)' UseSubmitBehavior = "false" />