0

c# でグリッドビューにチェックボックス列を追加する必要があります。

私は自分のコードを持っています:

               foreach (GridViewRow objRow in GrdDynamicControls.Rows)
                {
                    if (dttableDetails.Columns.Contains(strColumnName))
                    {
                        position = dttableDetails.Columns[strColumnName].Ordinal;

                        if (strtype.Contains("CheckBox"))
                        {
                            try
                            {

                              GrdDynamicControls.Rows[i].Cells.RemoveAt(position);

                                chkCheckBox.ID = strControlName;

                                chkCheckBox.AutoPostBack = true;
                                tcCheckCell.Controls.Add(chkCheckBox);

                                 objRow.Cells.Add(tcCheckCell);
                              //  GrdDynamicControls.Rows[i].Cells.AddAt(position, tcCheckCell);
                            }
                            catch { }
                            chkCheckBox.CheckedChanged += new EventHandler(chkCheckBox_CheckedChanged);



                        }


                    }
            }

しかし、これはグリッドビューの各objrowのチェックボックスを上書きしています。gridview.plsヘルプのすべての行の特定の列のチェックボックスを取得できません...

4

3 に答える 3

1

マークアップで TemplateField コントロールを使用して、代わりにテンプレートでチェックボックスを定義してみませんか? 管理しやすくなるのに…

<asp:GridVIew ...>

  <Columns>
     <asp:TemplateField ..>
        <asp:CheckBox .. />
     </asp:TemplateField>
  </Columns>
</asp:GridVIew>

そして、マークアップですべてを設定するだけです

于 2010-06-23T13:52:30.577 に答える
0

グリッドビューでOnRowDataBoundイベントを使用してみてください。これを使用して、各行に使用するコントロールを指定できます。これが例でそれを説明するリンクです。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx

于 2010-06-28T03:48:01.207 に答える
-1

マークアップで TemplateField コントロールを使用し、代わりにテンプレートでチェックボックスを定義します。

<asp:TemplateField HeaderText="Delete" ItemStyle-Width="39px">
    <ItemTemplate>
        <center>
            <asp:CheckBox ID="chkDelete" runat="server" />
        </center>
    </ItemTemplate>
</asp:TemplateField>
于 2017-04-19T10:40:45.800 に答える