我有一个带复选框字段和几个绑定字段的gridview控件。复选框字段不直接映射到数据库中的字段。相反,我想从数据库中的字段中读取值并“检查”一些复选框。基于数据表值在gridview中设置复选框
例如,给定从数据库以下数据 - >数据表
PROCESSED NAME DATE Y Mickey Mouse 11/15/2011 N Donald Duck 4/01/2012 Y James Bond 5/02/2011
我想在GridView显示一个复选框,并且其中PROCESSED = N的框的值设置为UNCHECKED和PROCESSED = Y要么有一个不可编辑的复选框,要么没有复选框。
PROCESSED NAME DATE [/] Mickey Mouse 11/15/2011 [ ] Donald Duck 4/01/2012 [/] James Bond 5/02/2011
要填充的GridView,一个SQL语句是对数据库运行,以及SQL查询的结果存储在一个数据表。在将数据表绑定到gridview之前,我想检查“已处理”字段并根据该值设置复选框。
这里是GridView控件(简称为清楚起见):
<asp:GridView ID="gridview_all_applicants" runat="server" AllowPaging="True">
<Columns>
<asp:TemplateField HeaderText="Complete">
<ItemTemplate>
<asp:CheckBox ID="process_flag" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="lastname" HeaderText="Last Name" ReadOnly="True" SortExpression="lastname" />
这里是我到目前为止在后面的代码
SqlCommand cmd = new SqlCommand(sql query here);
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
da.SelectCommand = cmd;
// Save results of select statement into a datatable
da.Fill(dt);
foreach (DataRow r in dt.Rows)
{
// do some processing of data returned from query
// read the char value from the returned data and set checkbox
procflag = r["process_flag"].ToString().ToLower();
CheckBox chkbox = new CheckBox();
if (procflag == null || procflag == "n")
{
// SET CHECKBOX TO "NOT CHECKED"
}
else
{
// SET CHECKBOX TO "CHECKED" AND MAKE IT UNCLICKABLE
// ----OR---- DO NOT DISPLAY CHECKBOX AT ALL.
}
} // end for each
gridview_all_applicants.DataSource = dt;
gridview_all_applicants.DataBind();
任何帮助是极大的赞赏。
Marco - 你我的朋友绝对是天才!多么优雅的解决方案....完美无缺.....谢谢! – itrickski