繁体   English   中英

获取数据网格视图中复选框列中的选中项 - C# Windows 窗体

[英]Get Checked Item in Check Box Column in Data Grid View - C# Windows form

如果Attendance_Status 中的值=“Attended”,我需要加载列Status 中的Checked Value,如果该值是Unattended,则取消选中。

下面是表格的屏幕截图:

在此处输入图片说明

我正在尝试添加下面的代码,但它不起作用:

foreach (DataGridViewRow row in dataGridView2.Rows) {
    if (row.Cells["Attendance_Status"].Value == "Attendance") 
    {
        row.Cells["Status"].Selected = true;
    }
    else
    {
        row.Cells["Status"].Selected = false;
    }
}

请帮忙!!

您可以尝试在 gridview 中查找控件,然后根据是否选择该控件的值检查 0 或 1,如下所示。

foreach (GridViewRow row in gvGridview.Rows)
{
  CheckBox cbAddAction = (CheckBox)row.FindControl("chkAddAction");                     
  int addPermission = Convert.ToInt16(cbAddAction.Checked);
}

您可以查看下面的 gridview 定义/声明以获得更多帮助。

<asp:GridView ID="gvUserPermission" runat="server" AllowPaging="True" AutoGenerateColumns="False"
    CssClass="table table-striped table-bordered bootstrap-datatable" HorizontalAlign="Center"
        OnRowDataBound="gvUserPermission_RowDataBound" PageSize="50" 
        DataKeyNames="ModuleId" 
        onselectedindexchanged="gvUserPermission_SelectedIndexChanged">
        <PagerSettings FirstPageText="« First" LastPageText="Last »" Mode="NumericFirstLast"
            PageButtonCount="10" />
        <Columns>                                               
        <asp:BoundField DataField="Modulename" HeaderText="Module Name" ItemStyle-Width="450px"
           SortExpression="Modulename" />
        <asp:TemplateField HeaderText="Add Action">
        <ItemTemplate>
        <asp:CheckBox ID="chkAddAction" Checked='<%# Eval("AddAction") == DBNull.Value ? false : Convert.ToBoolean(Eval("AddAction")) %>'
         runat="server" />
        </ItemTemplate>
        </asp:TemplateField>                                             
        </Columns>        
</asp:GridView>

要加载数据,您可以使用以下方法。 它将根据数据检查值,无需任何额外循环。

<asp:TemplateField HeaderText="Edit Action">
<ItemTemplate>
  <asp:CheckBox ID="chkEditAction" Checked='<%# Eval("EditAction") == DBNull.Value ? false : Convert.ToBoolean(Eval("EditAction")) %>'
    runat="server" />
</ItemTemplate>
</asp:TemplateField>

在SQL Server数据源写一个case语句返回NULL ,用于没有值Attended下面给出。

create table Attendace (Id int, Attendance_Status Varchar(50))
insert into Attendace values (1, 'Attended'),
       (2, 'Not Attended')

select id
     , case Attendance_Status when 'Attended' then 1 else null
    end as Attendance_Status
from Attendace

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM