-1

私は Grid ビューを持っており、動的な行と列があります。また、一部のセルには動的チェックボックスがあります。だから私はチェックボックスで中央揃えをしたい。

これは私のコードです。

<asp:GridView ID="gridUserAcess" runat="server" >

</asp:GridView>



    protected void Page_Load(object sender, EventArgs e)
    {        

            IList<PAGES> pageName = (from c in db.PAGES
                                       select c).ToList();

            int pagecount = pageName.Count;

            IList<ROLES> RoleName = (from r in db.ROLES
                                       select r).ToList();
            int rolrcount = RoleName.Count;

            DataTable dt = new DataTable("UserAcess");
            DataColumn dc1 = new DataColumn("PageName");
            dt.Columns.Add(dc1);

            foreach (var item in RoleName)
            {                    
                DataColumn dc = new DataColumn(item.RoleName);
                dt.Columns.Add(dc);

            }

            int i = 0;
            foreach (var page in pageName)
            {
                i += 1;
                DataRow dr = dt.NewRow();
                dr["PageName"] = page.PAGE_NAME;                    
                dt.Rows.Add(dr);
            }

            gridUserAcess.DataSource = dt;
            gridUserAcess.DataBind();


            for (int p = 1; p <= rolrcount; p++)
            {
                foreach (GridViewRow row in gridUserAcess.Rows)
                {
                    if (row.RowType == DataControlRowType.DataRow)
                    {
                        CheckBox cb = new CheckBox();

                        string pName = row.Cells[0].Text;                           
                        cb.Checked = true;
                        cb.ID = "che" + row.ID + p;
                        row.Cells[p].Controls.Add(cb);
                        row.Cells[p].HorizontalAlign = HorizontalAlign.Center;//this is not working
                    }
                }
            } 
    }

また、これも試してみます..

protected void gridUserAcess_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            GridViewRow row = new GridViewRow(e.Row.RowIndex + 1, -1, DataControlRowType.DataRow, DataControlRowState.Insert);
            TableCell cell = new TableCell();

            cell.HorizontalAlign = HorizontalAlign.Left;

            Control c = new Control(); 
            cell.Controls.Add(c);
            row.Cells.Add(cell);


        }

また

  protected void gridUserAcess_RowDataBound(object sender, GridViewRowEventArgs e)
       {      

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Center;
                e.Row.Cells[2].HorizontalAlign = HorizontalAlign.Center;
                e.Row.Cells[3].HorizontalAlign = HorizontalAlign.Center;
                e.Row.Cells[4].HorizontalAlign = HorizontalAlign.Center;
            }
        }

どちらも機能していません。動的チェック ボックスの中央を揃えるにはどうすればよいでしょうか。

4

1 に答える 1

0

次のように、中央に配置する各セルに CSS クラスを適用することでそれを行うことができます。

e.Row.Cells[1].CssClass = "center";
e.Row.Cells[2].CssClass = "center";
e.Row.Cells[3].CssClass = "center";
e.Row.Cells[4].CssClass = "center";

center次に、マークアップで、次のように CSS クラスを定義する必要があります。

<style type="text/css">
    .center {
        text-align: center;
    }
</style>

また

上記の定義を保持するファイルを作成し、マークアップのタグを.css介して CSS ファイルを参照できます。<link>

于 2013-09-04T00:53:55.513 に答える