变化的datagridview单元格的组合框,如果空/(空)C#
问题描述:
我在Windows窗体上使用C#和SQL Server 2014作为标题说,我想在一个特定的列来改变DataGridView的单元格/ s到组合框场,如果他们的工作空。变化的datagridview单元格的组合框,如果空/(空)C#
我的形式负载的方法是这样的:
private void AdminPanel_Load(object sender, EventArgs e)
{
DBConn.ConnectToDatabase();
dataGridViewAP.DataSource = DBConn.getAdminInfo();
}
我有这样
public DataTable getAdminInfo()
{
try
{
string strCommand = "SELECT Customer.AccountNo AS [Account Number], Customer.Name AS [Customer Name], Customer.Adrs1 AS [Address 1], Customer.Adrs2 AS [Address 2], Customer.City AS [City], Customer.Province AS [Province], Customer.PostalCode AS [Postal Code], Customer.Email1 AS [Email], Manifest.Class AS [Class], Manifest.Rname AS [Recipient Name], Manifest.Adrs1 AS [Dest. Address 1], Manifest.Adrs2 AS [Dest. Address 2], Manifest.City AS [City], Manifest.State AS [State], Manifest.PostalCode AS [Postal Code], Manifest.Country AS [Country], Manifest.Item AS [Description], Manifest.Weight AS [Weight (lb)], Manifest.Value AS [Value (USD)], Manifest.DateTime AS [Date/Time], Manifest.CheckedBy AS [Checked By], Customer.AccStatus AS [Account Status] FROM Customer INNER JOIN Manifest ON Customer.AccountNo = Manifest.FKAccountNo WHERE CONVERT(DATE,DateTime)=CONVERT(Date,GETDATE())";
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(strCommand, conn);
da.Fill(dt);
return dt;
}
catch (SqlException e)
{
MessageBox.Show(e.Source + "/n" + e.Message + "/n" + e.StackTrace);
return null;
}
}
我要添加组合框细胞帐户状态栏电池与更新它的方法getAdminInfo()所选值如果为空。
希望我的问题是清楚的,任何想法?
答
到DataTable到DataGridView的绑定,创建对应于特定列DataGridViewComboBoxColum和设置列其DataPropertyName财产之前。通过绑定指定ComboBox项目。
代码在你的负载功能插入:
DataGridViewComboBoxColumn cbcol = new DataGridViewComboBoxColumn();
cbcol.Name = "Account_Status" ;
cbcol.DataPropertyName = "Account Status" ; // DataTable column name
cbcol.DataSource = ... ; // ComboBox DataSource
dataGridViewAP.Columns.Add(cbcol);
dataGridViewAP.DataSource = DBConn.getAdminInfo();
对不起乱画我的反应迟缓。首先感谢您的回应。有用。有什么办法恢复细胞回到以前的状态即空/空?因为一旦我点击组合框,某些值将保持选中状态。我已经使用清单作为cbcol数据源,我又增加了空字段列表(“”),选择一个空字段。我不确定这是否是正确的做法。 – Vik
一种可能性(未测试)是一个新的空行添加到DataGridViewComboBoxColumn数据源。 – Graffito