【问题标题】:How to check a specific check box in gridview from codebehind?c#如何从后面的代码中检查gridview中的特定复选框?c#
【发布时间】:2021-08-12 23:56:34
【问题描述】:
<asp:GridView ID="gvApplDocs" runat="server" AutoGenerateColumns="False" Width="1050px"
                   DataKeyNames="doc_name_eng" Font-Names="Calibri" OnRowCommand="gvApplDocs_RowCommand"
                   OnRowDataBound="gvApplDocs_RowDataBound">
                   <Columns>
                       <asp:TemplateField HeaderText="Sl No" ItemStyle-Width="40px">
                           <ItemTemplate>
                               <asp:Label ID="lblRowNumber" Text='<%# Container.DataItemIndex + 1 %>' runat="server" />
                           </ItemTemplate>
                       </asp:TemplateField>
                       <asp:TemplateField HeaderText="Application Document">
                           <ItemTemplate>
                               <asp:Label ID="lbl_doc_name_eng" runat="server" Text='<%# Eval("doc_name_eng") %>'></asp:Label>
                           </ItemTemplate>
                       </asp:TemplateField>
                       <asp:TemplateField ItemStyle-HorizontalAlign="Center" HeaderText="Document Uploaded Y/N">
                           <ItemTemplate>
                               <asp:CheckBox ID="chkRow" Enabled="false" runat="server" />
                           </ItemTemplate>
                       </asp:TemplateField>
                   </Columns>
               </asp:GridView>

我想根据否选中复选框。例如我有的文件 如果我有四个 id(1,2,3,4) 的文档 我想检查网格中的对应复选框。大家帮帮我

有什么方法可以从后面的代码中特别检查gridview中的复选框 提前致谢

【问题讨论】:

  • 在后面的代码中,遍历 GridView 中的所有行。在每一行中,执行 FindControl("chkRow") 并将其转换为可用于确定是否已检查的对象。示例:Checkbox chk = row.FindControl("chkRow"); if (chk.Checked) { ... }
  • 如果文档存在,则必须从后面的代码中检查复选框,数据表 dt 拥有文档,具体取决于 doc_id,必须选中相应的复选框。
  • 您的代码隐藏中有 GridView RowDataBound 事件吗?如果是这样,你需要在那里做类似的事情。看起来你在做“gvApplDocs_RowDataBound”——你能在你的问题中发布那个代码吗?

标签: c# asp.net gridview


【解决方案1】:

这是一个通用的答案。我认为你可以接受这个并更新你自己的 RowDataBound 事件(或者在你的问题中包含你的事件,我会在更新的答案中为你使用它)

前端

<asp:GridView ID="gvTest" runat="server" AutoGenerateColumns="false" OnRowDataBound="gvTest_RowDataBound">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="chkRow" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

代码隐藏 RowDataBound 事件

void gvTest_RowDataBound(object sender, GridViewRowEventArgs e)
{
    switch (e.Row.RowType)
    {
        case DataControlRowType.DataRow:

            // assumes you passed in the DataTable.Rows as the DataSource
            DataRow row = (DataRow)e.Row.DataItem;
            if (row != null)
            {
                CheckBox chkRow = (CheckBox)e.Row.FindControl("chkRow");
                if (chkRow != null)
                {
                    // logic check from our row....number of documents?
                    int numberOfDocs = (int)row["number_of_dcos"];
                    if (numberOfDocs > 0)
                    {
                        chkRow.Checked = true;
                    }
                    else
                    {
                        chkRow.Checked = false;
                    }
                }
            }

            break;

        case DataControlRowType.Header:
            break;

        case DataControlRowType.Footer:
            break;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    相关资源
    最近更新 更多