在我的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
}
}
}
以下是我的gridview中的示例字段,我在其中启用或禁用控件。
<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>
答案 0 :(得分:1)
您可以执行以下步骤
在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>
答案 1 :(得分: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>
有点难看,但会工作得很好。
答案 2 :(得分:0)
在Gridview的RowDataBound事件中尝试。
答案 3 :(得分:0)
尝试使用DataBound事件迭代所有单元格并更新bg。