我有一個帶複選框字段和幾個綁定字段的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