簡體   English   中英

DataGridView中的問題:datagridview對用戶(WinForms)似乎是只讀的

[英]A Problem in DataGridView : datagridview seems readonly to user (WinForms)

我的表單中有一個datagridview。 它通過選擇國家/地區和國家/地區的城市來填充。我已經設置了屬性(AllowUsersToAddRow = True),但是當我運行我的項目時,用戶無法添加或編輯或刪除任何行。我選中了它。它不是readonly(readonly = false )並啟用(Enabled = true)

有什么問題?

填充datagridview的代碼:

private void cmbCountryValues_SelectedIndexChanged(object sender, EventArgs e)
{
    dgvCityValues.Enabled = cmbCountryValues.SelectedIndex>=0;
    if (!dgvCityValues.Enabled)
    {
        dgvCityValues.DataSource = null;
        return;
    }

    int CountryId = int.Parse(cmbCountryValues.SelectedValue.ToString());

    dgvValues.DataSource = from record in Program.dal.Cities(CountryId) select new { record.City};
 }

如果您發現此問題有用,請不要忘記投票。

舉一個簡化的例子,如果我做與您的查詢等效的操作,例如:

var cities = new City[] { new City("New York","NY"), new City("Sydney","SY"), new City("London","LN") };
dataGridView.DataSource = cities;

我得到與您相同的結果-沒有添加新行的選項,但是如果我更改為BindingList<T>並將其設置為AllowNew那么所有方法都可以:

var cities = new City[] { new City("New York","NY"), new City("Sydney","SY"), new City("London","LN") };
var citiesBinding = new BindingList<City>(cities);
citiesBinding.AllowNew = true;

dataGridView.DataSource = citiesBinding;

編輯-針對您特定示例的解決方案:

private class City
{
    public string Name { get; set; }
}

private void cmbCountryValues_SelectedIndexChanged(object sender, EventArgs e)
{
    dgvCityValues.Enabled = cmbCountryValues.SelectedIndex >= 0;
    if (!dgvCityValues.Enabled)
    {
        dgvCityValues.DataSource = null;
        return;
    }

    int CountryId = int.Parse(cmbCountryValues.SelectedValue.ToString());

    var queryResults = from record in Program.dal.Cities(CountryId) select new City { Name = record.City };
    var queryBinding = new BindingList<City>(queryResults.ToList());
    queryBinding.AllowNew = true;

    dgvValues.DataSource = queryBinding;
}

請注意,a)我必須將查詢選擇中的匿名類型更改為具體類型City並將Linq查詢返回的IEnumerable<T>更改為IList<T>兼容類型以創建BindingList<T> 這應該工作,但是:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM