C# 如何根据条件在GridView中选中复选框?

C# 如何根据条件在GridView中选中复选框?,c#,asp.net,user-controls,C#,Asp.net,User Controls,我是初学者。我有四个文本框字段用于ItemName、ItemDescription、Length和Quantity。 一个radiobuttonlist及其列表项为FixedLength和Random Length。 一个名为Submit的按钮字段和一个gridview 在GridView中,我有4个绑定列和1个模板列,例如ItemName、ItemDescription、Length、Quantity和IsFixed_f(标志字段)。我在GridView的Template列中为IsFixed\

我是初学者。我有四个文本框字段用于ItemName、ItemDescription、Length和Quantity。 一个radiobuttonlist及其列表项为FixedLength和Random Length。 一个名为Submit的按钮字段和一个gridview

在GridView中,我有4个绑定列和1个模板列,例如ItemName、ItemDescription、Length、Quantity和IsFixed_f(标志字段)。我在GridView的Template列中为IsFixed\u f字段添加了一个复选框

输入所有文本框字段后,我必须在radiobuttonlist中选择一个列表项(FixedLength或RandomLength)。完成这些事情之后。如果我输入Submit按钮,则文本框中的所有值都将显示在GridView的相应列名下,如果选择了FixedLength listitem,则要选中复选框。否则,复选框应为false。如何做到这一点

在Button Click事件中,我使用了如下方式

        DataRow DR = null;
        DR = datatable.NewRow();
        DR["ItemName"] = DSItemName.Text.Trim();
        DR["Description"] = txtItemDescription.Text.Trim();
        DR["Length"] = txtLength.Text.Trim();
        DR["Quantity"] = txtQuantity.Text.Trim();
        datatable.Rows.Add(DR);
        GridView.DataSource = datatable;
        GridView.DataBind();
但我不知道如何选中复选框并将其显示在GridView中。请提出建议。 如果我使用下面的代码,它会在GridView中显示文本“true”和复选框

        foreach (GridViewRow GVR in gridview.Rows)
        {
            CheckBox cb = (CheckBox)GVR.FindControl("cbIsFixed_f");

            if (cb != null && radiobuttonlist.SelectedItem.Value == "Fixed Length")
            {
                cb.Checked = true;
            }
            else
            {
                cb.Checked = false;
            }
            DR["IsFixed_f"] = cb.Checked;
        }

您可以为gridview的OnRowDataBound事件编写事件处理程序。在这种情况下,您需要找到复选框列并将其设置为选中或未选中

大概是这样的:

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
  CheckBox c = e.Row.Cells[4].FindControl("YourCheckboxId");
  if(c != null && e.Row.DataItem["sFixed_f"] == true)
  {
    c.Checked = true;
  }
}

我不太清楚如何从数据集中获取一行数据——我想您指的是dataTable.newRow()。此外,我希望您的表模式包含一列IsFixed\u f值

如果您的tableSchema为您的IsFixed\u f值增加了一列,您可以使用checkBoxField绑定这些值

正如您提到的templateField一样,我假设您的表没有IsFixed\u f的任何定义?在这种情况下,您可以手动将此列添加到架构中

将IsFixed_f值绑定到特定的复选框(在新的gridviewrow中),而不将其存储在某个位置(数据集/表格?!)-对我来说似乎不可能


希望这可能会有所帮助-如果没有,请详细描述您的问题

我得到了这个问题的答案

 DR["IsFixed_f"] = radiobuttonlist.SelectedItem.Value == "Fixed Length" ?true : false;

谢谢大家的回复。

我们也可以从.aspx文件中查看您的代码吗?@Jakob。谢谢你的回复。“我得到了答案,我在下面发了帖子。”弗兰兹。是的,这是一个数据表。我没有将这些字段存储在数据库中。我只想使用GridView显示它。但是使用上面的代码,我可以在GridView.Hi中显示文本框值。我已经编辑了我的问题。我想这会对我的问题给出一些清晰的看法。谢谢你编辑你的答案——还有一个问题。gridView中的每一行都有自己的IsFixed\u f值?如果这是正确的,您需要将IsFixed\u f值存储在某个地方。。什么时候运行示例代码(foreach…)-PageLoad?点击按钮?点击提交?此示例代码引用每行的radiobuttonlist(不在gridview中)!那么每一行的复选框都有相同的值?我仍然认为您需要为每行存储IsFixed_f值!嗨,弗兰兹,谢谢你的支持。我得到了答案。我在上面发布了。无论如何,欢迎您尝试:DR[“IsFixed_f”]=(radiobuttonlist.SelectedItem.Value=“Fixed Length”);//这也会起作用:DHi,我已经编辑了我的问题。我希望它能让你对我的问题有一个清晰的认识。别忘了把你的问题标记为未回答(或者给一些答案打分gg)