[英]How to show unbound columns in a bound DataGridView using c# winforms
我有一個DataGridView,如下所示.DataGridView有7列,其中第1列,第4列和第6列將是未綁定的,其余的將是綁定列。現在我的要求是
1]在[0]列中,我想顯示一個自動遞增的整數值,例如“序列號”。 1,2,3 ..... n
2]在列[4]上,我想顯示圖像列表中的圖標/圖像。
3]在列[6]上,我想顯示一個Button控件
try
{
using (FbConnection conLLV = new FbConnection(connectionString))
{
conLLV.Open();
using (FbCommand cmdLLV = new FbCommand(sqlQryLLV, conLLV))
{
cmdLLV.Parameters.Add("@t_id", FbDbType.Integer).Value = tid;
cmdLLV.Parameters.Add("@mem_id", FbDbType.Integer).Value = mid;
cmdLLV.CommandType = CommandType.Text;
using (FbDataAdapter daLLV = new FbDataAdapter(cmdLLV))
{
using (DataTable dtLLV = new DataTable())
{
daLLV.Fill(dtLLV);
dgSSW.AutoGenerateColumns = false;
dgSSW.ColumnCount = 7;
//At Column[0] ->a Serial No column
dgSSW.Columns[1].Name = "subsec_name";
dgSSW.Columns[1].HeaderText = "Sub Section Name";
dgSSW.Columns[1].DataPropertyName = "subsec_name";
dgSSW.Columns[2].Name = "rt_correct_ans";
dgSSW.Columns[2].HeaderText = "Correct Answer";
dgSSW.Columns[2].DataPropertyName = "rt_correct_ans";
dgSSW.Columns[3].Name = "rt_your_ans";
dgSSW.Columns[3].HeaderText = "Your Answer";
dgSSW.Columns[3].DataPropertyName = "rt_your_ans";
//At Column[4] ->an Image column
dgSSW.Columns[5].Name = "q_r_difficulty";
dgSSW.Columns[5].HeaderText = "Difficulty Level";
dgSSW.Columns[5].DataPropertyName = "q_r_difficulty";
//At Column[6] ->a column having a Button control
dgSSW.DataSource = dtLLV;
}//data table closed and disposed here
}// data adapter closed and disposed up here
}// command disposed here
}//connection closed and disposed here
}
catch (FbException ex)
{
MessageBox.Show("LLV--" + ex.Message);
}
我如何達到我的要求,請提供使用代碼的建議。我已經搜索了互聯網,但給出的解決方案與我的要求不符。
可能的解決方案:
0]設置數據源
dgSSW.DataSource = dtLLV;
1]行號:為其添加列並應用單元格格式
var col0 = new DataGridViewTextBoxColumn
{
HeaderText = "#", Name="RowNum",
ReadOnly = true,
Width = 10
};
dgSSW.Columns.Insert(0, col0);
dgSSW.CellFormatting += GridCellFormatting;
private void GridCellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (dgSSW.Columns[e.ColumnIndex].Name == "RowNum")
{
e.Value = (e.RowIndex + 1).ToString();
}
}
2]圖片欄:
var col3 = new DataGridViewImageColumn { HeaderText = "Pic", Name = "Pic" };
dgSSW.Columns.Insert(4, col3);
// set image for a cell
dgSSW["Pic", 0].Value = Resources.add;
3]帶有點擊處理的按鈕列
var col7 = new DataGridViewButtonColumn
{
HeaderText = "Proceed", Name = "Action",
Text = "+",
UseColumnTextForButtonValue = true
};
dgSSW.Columns.Add(col7);
dgSSW.CellContentClick += GridCellContentClick;
private void GridCellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dgSSW.Columns[e.ColumnIndex].Name == "Action")
{
MessageBox.Show((e.RowIndex + 1).ToString());
}
}
更新 :由於您不使用AutoGenerateColumns
並手動創建所有列,因此可以創建所有col0,col3,col7,然后再設置DataSource
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.