0

在我的 gridview 控件中,根据用户角色启用或禁用。我想将启用控件的背景颜色更改为黄色。我已尝试RowCreated按如下方式进行操作,但当时所有单元格均已启用。

protected void begv_OrderDetail_RowCreated(object sender, GridViewRowEventArgs e)
{
     foreach (TableCell cell in e.Row.Cells)
     {
          if (cell.Enabled == true)
          {
          }
          else
          {
             //Never enters this area
          }

     }
}

这是我在网格视图中启用或禁用控件的示例字段。

    <asp:TemplateField HeaderText="ReasonCode" SortExpression="ReasonCode">
        <HeaderTemplate>
            <asp:Label ToolTip="ReasonCode" runat="server" Text="RC"></asp:Label>
        </HeaderTemplate>
        <EditItemTemplate>
            <asp:TextBox ID="txt_ReasonCode" onchange="disableNextStatusButtons()" runat="server" Text='<%# Bind("ReasonCode") %>'
                Enabled='<%# (Roles.IsUserInRole("İhracat Uzmanı") && Session["Status"].ToString()=="3") %>'
                Width="40px"></asp:TextBox>
        </EditItemTemplate>
    </asp:TemplateField>
4

4 回答 4

1

您可以通过以下步骤

  1. 检查 RowDatabound 上的用户角色
  2. 在 RowDatabound 上更改行的颜色

    protected void RowDataBound(Object sender, GridViewRowEventArgs e)
    {
        if(e.Row.RowType == DataControlRowType.DataRow)
        {
            //check role
             if (condition)
               e.Row.BackColor = Color.Red;
             else
               e.Row.BackColor = Color.Green;  
            //or set you individual control background 
             //get any control
              var chk = (CheckBox)e.Row.FindControl("chkb");
             //set background
              chk.BackColor = Color.Red;//etc
         }
    }
    

您可以将 css 动态设置为文本框CssClass="yourcss"

                 <asp:TextBox ID="txt_ReasonCode" onchange="disableNextStatusButtons()" runat="server" Text='<%# Bind("ReasonCode") %>'
                Enabled='<%# (Roles.IsUserInRole("İhracat Uzmanı") && Session["Status"].ToString()=="3") %>'
                CssClass='<%# (Roles.IsUserInRole("İhracat Uzmanı") && Session["Status"].ToString()=="NormalCss").ToString()=="true"?"yellowcss":"othercss"  %>'
                Width="40px"></asp:TextBox>
于 2013-02-27T07:25:12.837 回答
1

您也可以BackColor使用数据绑定语法设置

<asp:TextBox ID="txt_ReasonCode" 
             onchange="disableNextStatusButtons()" 
             runat="server"
             Text='<%# Bind("ReasonCode") %>'
             Enabled='<%# (Roles.IsUserInRole("İhracat Uzmanı") && Session["Status"].ToString()=="3") %>'
             BackColor='<%# (Roles.IsUserInRole("İhracat Uzmanı") && Session["Status"].ToString()=="3") ? System.Drawing.Color.Red: System.Drawing.Color.Green %>'
             Width="40px">
</asp:TextBox>

有点难看,但会工作得很好。

于 2013-02-27T07:53:14.233 回答
0

在 Gridview 的 RowDataBound 事件中尝试一下。

于 2013-02-27T07:13:12.963 回答
0

尝试使用 DataBound 事件遍历所有单元格并更新 bg。

于 2013-02-27T07:14:08.000 回答