根据数据表值在gridview中设置复选框
我有一个gridview控件,带有复选框字段和几个绑定字段。 复选框字段不直接映射到数据库中的字段。 相反,我想从数据库中的字段读取值并“检查”一些复选框。
例如,给出数据库中的以下数据 – > datatable
已处理的名称日期 Y米老鼠11/15/2011 N唐老鸭4/01/2012 Y James Bond 5/02/2011
我希望gridview显示一个复选框,并将框的值设置为UNCHECKED,其中PROCESSED = N,而PROCESSED = Y则具有不可编辑的复选框或根本没有复选框。
已处理的名称日期 [/]米老鼠11/15/2011 []唐老鸭4/01/2012 [/] James Bond 5/02/2011
要填充gridview,将对数据库运行SQL stmt,并将SQL查询的结果存储在数据表中。 在将数据表绑定到gridview之前,我想检查“已处理”字段并根据该值设置复选框。
这是gridview控件(为清晰起见缩短):
这是我到目前为止在代码背后的内容
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();
任何帮助是极大的赞赏。
你可以这样做:
首先在sql server中:
SELECT CAST(CASE PROCESSED WHEN 'Y' THEN 1 ELSE 0 END AS BIT) AS PROCESSED NAME DATE FROM ExampleTable
在c#代码中:
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); gridview_all_applicants.DataSource = dt; gridview_all_applicants.DataBind();
最后在aspx中:
如何使用数据库无关的解决方案,只是因为您使用非sqlserver数据库;)
这一个Perfectly Works.I已使用Kevin和marco Code进行了修改。 谢谢你凯文和马可