0

私のグリッドビューでは、ユーザーの役割に応じてコントロールが有効または無効になっています。有効なコントロールの背景色を黄色に変更したい。以下のようにしようとしました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 に答える