0
一切都在我的項目大多是動態的,我有,試圖創建多個datagridviews動態的NullReferenceException發現datagridview的
與我的設置,我在這條線dgv.DataSource = ds.Tables[index.ToString()];
伊夫試圖得到一個NullReferenceError
目前的時候有點問題幾種不同的方法,但就我所知,我不能似乎發現了什麼錯我的代碼這應該是完美的工作
所有相關的代碼如下
//Create a new window
private void NewWindow() {
TabPage tb = new TabPage();
DataGridView dgv = new DataGridView();
DataTable dt = new DataTable();
tb.Text = "New..";
dgv.Dock = DockStyle.Fill;
tb.Controls.Add(dgv);
tabControl1.TabPages.Add(tb);
}
//bind
DataGridView dgv = tabControl1.SelectedTab.Controls.OfType<DataGridView>() as DataGridView;
dgv.DataSource = ds.Tables[index.ToString()];
編輯:這裏所有的所有相關函數和變量
DataSet ds = new DataSet();
string path = "";
bool _exiting = false;
private void openToolStripMenuItem_Click(object sender, EventArgs e) {
Browse();
}
private void NewWindow() {
TabPage tb = new TabPage();
DataGridView dgv = new DataGridView();
DataTable dt = new DataTable();
tb.Text = "New..";
dgv.Dock = DockStyle.Fill;
tb.Controls.Add(dgv);
tabControl1.TabPages.Add(tb);
}
private void OnColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
int index = tabControl1.SelectedIndex;
EditHeader eh = new EditHeader(this.UpdateHeader);
eh.TextBox1.Text = ds.Tables[index.ToString()].Columns[e.ColumnIndex].ToString();
eh.TextBox2.Text = e.ColumnIndex.ToString();
eh.Show();
}
private void UpdateHeader(string indexVal) {
string[] array = indexVal.Split(',');
int index = int.Parse(array[0]);
ds.Tables[index.ToString()].Columns[index].ColumnName = array[1];
DisableSortMode();
}
private void OpenCSVFile() {
using (TextFieldParser csvParser = new TextFieldParser(path)) {
csvParser.TextFieldType = FieldType.Delimited;
csvParser.SetDelimiters(",");
int index = tabControl1.SelectedIndex;
bool firstLine = true;
while (!csvParser.EndOfData) {
//proccessing
string[] fields = csvParser.ReadFields();
if (firstLine) {
foreach (var val in fields) {
ds.Tables[index.ToString()].Columns.Add(val);
}
firstLine = false;
continue;
}
//get row data
ds.Tables[index.ToString()].Rows.Add(fields);
}
//bind
DataGridView dgv = tabPage1.Controls.OfType<DataGridView>() as DataGridView;
dgv.DataSource = ds.Tables[index.ToString()];
}
}
private void Browse() {
OpenFileDialog csvSearch = new OpenFileDialog();
csvSearch.Filter = "csv files (*.csv)|*.csv";
csvSearch.FilterIndex = 1;
csvSearch.Multiselect = false;
if (csvSearch.ShowDialog() == DialogResult.OK) {
int index = tabControl1.SelectedIndex;
DataTable dt = ds.Tables.Add(index.ToString());
path = csvSearch.FileName;
tabPage1.Text = csvSearch.FileName;
OpenCSVFile();
DisableSortMode();
}
}
'ds'是如何創建的? 'index'從哪裏來?你是否檢查過從控件返回的'dgv'不是null? – ainwood
你的ds從哪裏來?它是一個數據集? –
我更新了所有必要的代碼 – FlamingGenius