Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态修改gridview元素的类_C#_Asp.net_Gridview - Fatal编程技术网

C# 动态修改gridview元素的类

C# 动态修改gridview元素的类,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个gridview: <asp:GridView runat="server" ID="gv_patientMeds" Width="100%" AutoGenerateColumns="False" GridLines="Both" OnRowDataBound="gv_patientMeds_onRowDataBound"> <Columns> <asp:TemplateField HeaderText="Edit" HeaderS

我有一个gridview:

<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>
数据绑定pup
只是一个自定义对象列表

如您所见,我正试图使用某种逻辑来分配delete按钮的类,其中recordId是datatobindpopup列表中一个对象的属性。不过ASP不喜欢这样。我得到“服务器标签格式不正确”

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


提前感谢。

用此按钮替换您的
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" />

尽管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"; 

            }
        }

仍然收到错误“服务器标记格式不正确”。您只从CssClass逻辑中删除了Eval(),对吗?这是因为您使用了嵌入的双引号。确保嵌入的代码被单引号括起来。虽然你可能是对的,但我仍然会遇到同样的错误。@fnostro不要介意我上面的评论。你是对的。我在OnClientClick参数上也遇到了同样的问题。@Byc现在更新了,忘记了为
OnClientClick
添加单引号,您可以像OP尝试做的那样做……一旦引号正确:)但是在RowDataBound事件中处理这个问题要干净得多,并且提供了更多的控制。@fnostro应该很好,顺便说一句,OnClientClick会工作,但CssClassit不会,它会。首先呈现服务器端代码,最终结果将是class=“X”,其中“X”是一个或另一个css类……假设绑定的数据不会在转换时引发异常。你的方式更好though@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"; 

            }
        }