I have a datagridview in my Winform app. I set the columns manually in designer and then try to fill it by a function. I check the function step by step and in the last line of code datasource dt has data inside it. but the datagridview become empty at the end.
there is something else, I can see columns in designer but in the app the datagridview is a empty gray box, I'm sure that the visibly property is true.
private void LoadRequestProducts(int requestId)
{
using (SqlConnection con = new SqlConnection(connectionDB))
{
con.Open();
string query = @"
SELECT
ProductCode, ProductName, Unit, Quantity,
CASE WHEN IsReturnable = 1 THEN N'بله' ELSE N'نه' END AS IsReturnable,
ReasonCode, ReasonDetail, DestinationCode, DestinationName, ReturnDate, Details
FROM RequestProducts
WHERE RequestID = @RequestID";
DataTable dt = new DataTable();
using (SqlDataAdapter da = new SqlDataAdapter(query, con))
{
da.SelectCommand.Parameters.AddWithValue("@RequestID", requestId);
da.Fill(dt);
}
dgvRequestDetails.AutoGenerateColumns = false;
dgvRequestDetails.Columns["colProductCode"].DataPropertyName = "ProductCode";
dgvRequestDetails.Columns["colProductName"].DataPropertyName = "ProductName";
dgvRequestDetails.Columns["colUnit"].DataPropertyName = "Unit";
dgvRequestDetails.Columns["colQuantity"].DataPropertyName = "Quantity";
dgvRequestDetails.Columns["colIsReturnable"].DataPropertyName = "IsReturnable";
dgvRequestDetails.Columns["colReasonCode"].DataPropertyName = "ReasonCode";
dgvRequestDetails.Columns["colReasonDetail"].DataPropertyName = "ReasonDetail";
dgvRequestDetails.Columns["colDestinationCode"].DataPropertyName = "DestinationCode";
dgvRequestDetails.Columns["colDestinationName"].DataPropertyName = "DestinationName";
dgvRequestDetails.Columns["colReturnDate"].DataPropertyName = "ReturnDate";
dgvRequestDetails.Columns["colDetails"].DataPropertyName = "Details";
dgvRequestDetails.DataSource = dt;
}
}