gpt4 book ai didi

c# - 绑定(bind)源时选中/取消选中 gridview 中的复选框

转载 作者:行者123 更新时间:2023-11-29 04:44:09 25 4
gpt4 key购买 nike

我正在做一个项目。我有一个 gridview,其中一列有复选框。现在我想用数据填充我的 gridview,并根据我的状态字段相应地选中/取消选中复选框。直到现在我在 gridview 行中处理它数据绑定(bind)事件。但我只想知道有没有办法在绑定(bind)源时标记复选框。

我正在执行查询以在 gridview 中获取数据

select s.studentcode,s.studentname,r.status from tblstudent s join tblresults r on s.studentcode=r.studentcode

我得到的输出

enter image description here

现在我希望如果我的状态是“晋升”复选框被选中,如果它是“未晋升”复选框被取消选中。我不想使用行数据绑定(bind)方法。只想在下面的行中完成我的工作

 sql = "select s.studentcode,s.studentname,r.status from tblstudent s join tblresults r on s.studentcode=r.studentcode";
ds = obj.openDataset(sql, Session["SchoolCode"].ToString());
if (ds.Tables[0].Rows.Count > 0)
{
grdstudents.DataSource = ds;
grdstudents.DataBind();
grdstudents.Visible = true;
}
else
{
alertdiv.Visible = true;
lblalertmsg.Visible = true;
btnclose.Visible = true;
lblalertmsg.Text = "No Record found";
}

解决方案

查询

select s.studentcode,s.studentname,if(r.status='Promoted',true,false) as status from tblstudent s left join tblresults r on s.studentcode=r.studentcode where s.classcode='10000'

grdstudents.DataSource = ds;// note we binded to final table
grdstudents.DataBind();

gridview 中的 aspx 页面中的复选框字段:

<ItemTemplate>
<asp:CheckBox ID="chkapply" runat="server" Checked='<%# Convert.ToBoolean(Eval("status"))%>'/>
</ItemTemplate>

此解决方案将帮助您避免在使用 gridview 的项目绑定(bind)或行数据绑定(bind)事件时编写额外的代码

最佳答案

复选框只能使用 bool 值来选中/取消选中。在这种情况下,因为 Column: 'status' 不代表 bool 值,所以直接绑定(bind)数据不会达到目的。

您需要执行两个步骤:

步骤 1.) 将原始数据复制到新表并将“状态”列的数据类型更改为 bool 值。

步骤 2.) 使用原始表的数据修改最终表中状态列中的数据。

第一步:

ds = obj.openDataset(sql, Session["SchoolCode"].ToString());
DataTable dtOriginalTable = ds.Tables[0];
DataTable dtFinalTable = new DataTable();
foreach (DataColumn dc in dtOriginalTable.Columns)
{
dtFinalTable.Columns.Add(dc.ColumnName);
}
foreach (DataColumn dc in dtFinalTable.Columns)
{
if (dc.ColumnName == "status")
dc.DataType = System.Type.GetType("System.Boolean");
}

下面的第 2 步::

foreach (DataRow drow in dtOriginalTable.Rows)
{
if( drow["status"].ToString().Equals("Promoted"))
drow["status"]="true";
else
drow["status"]="false"
// ADD the row to final table
dtFinalTable.Rows.Add(drow.ItemArray);
}

现在按照以下方式绑定(bind)到 GridView:

grdstudents.DataSource = dtFinalTable ;// note we binded to final table
grdstudents.DataBind();

注意: 为什么需要第 1 步?因为一旦用数据填充列,您就无法更改其数据类型。

当数据库有大量数据时,这也会是一个性能问题。

关于c# - 绑定(bind)源时选中/取消选中 gridview 中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22191467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com