调用该函数:
List<ProceduraEtapuPolaFormularza> prawoPolGrida = impuls.pobierzPrawaPolFormularza(krpEtapDlaOsoby.pe_id_etapu, pole.idPola, poleGrida.id_pola_g);
功能:
public List<ProceduraEtapuPolaFormularza> pobierzPrawaPolFormularza(int peIdEtapu,int fdpIdPola,int? fdpgIdPolaG)
{
var p = new OracleDynamicParameters();
p.Add("p_pe_id_etapu", peIdEtapu, OracleDbType.Int32, ParameterDirection.Input);
p.Add("p_fdp_id_pola", fdpIdPola, OracleDbType.Int32, ParameterDirection.Input);
p.Add("p_fdpg_id_pola_g", fdpgIdPolaG, OracleDbType.Int32, ParameterDirection.Input);
p.Add("p_refcursor", null, OracleDbType.RefCursor, ParameterDirection.Output);
List<ProceduraEtapuPolaFormularza> queryList = new List<ProceduraEtapuPolaFormularza>();
queryList = connection.Query<ProceduraEtapuPolaFormularza>("ktr_coliber_pcg.pobierz_pe_pola_form", param: p, commandType: CommandType.StoredProcedure).ToList<ProceduraEtapuPolaFormularza>();
return queryList;
}
当我在调试器中时,我进入此功能并导航到&#34; return querylist
&#34;它有1个元素,但当它返回函数调用时,列表计数为0。
我想补充一点,这个函数是从construcor
调用的。
我尝试了几种选择:
这里有什么问题?
构造函数(外观函数&#34; TworzFormularz&#34;):
public KorespondencjaWindowForm(KorespondencjaEtapDlaOsoby _krpEtapDlaOsoby, ImpulsRepository _impuls, FormMain formMain = null, KorespondencjaMDIForm mdiParentForm = null)
{
_formMain = formMain;
impuls = _impuls;
InitializeComponent();
gridViewFormularz.CellValueChanged += GridView1_CellValueChanged1;
krpEtapDlaOsoby = _krpEtapDlaOsoby;
UzupelnijNaglowekISzczegoly(_krpEtapDlaOsoby.id_korespondencji);
TworzFormularz();
TworzFormularzKlientow();
PobierzZalaczniki();
DopasujLayoutGrida();
_mdiFormParent = mdiParentForm;
DevExpress.Skins.SkinManager.EnableFormSkins();
DevExpress.LookAndFeel.LookAndFeelHelper.ForceDefaultLookAndFeelChanged();
SkinManager.EnableMdiFormSkins();
gridViewFormularz.PopupMenuShowing += GridView1_PopupMenuShowing;
try
{
impuls.WczytajUstawieniaKolumnGrida(int.Parse(_formMain.podstawowyNrEwidencyjnyOsobyZalogowanej.ToString()), int.Parse(gridViewFormularz.Name), null, ref gridViewFormularz);
}
catch (Exception error)
{
Program.logger.Error("KorespondencjaWindowForm.WczytajUstawieniaKolumnGrida():" + error.Message);
}
gridViewKlienci.CustomColumnDisplayText += GridViewKlienci_CustomColumnDisplayText;
// repositoryItemLookUpEditTypAdresu.CustomDisplayText += RepositoryItemLookUpEditTypAdresu_CustomDisplayText;
listaHistorii= impuls.pobierzHistorieKorespondencji(krpEtapDlaOsoby.id_korespondencji);
bindingSourceHistoria.DataSource = listaHistorii;
gridViewKlienci.RowCellStyle += gridViewKlienci_RowCellStyle;
}
现在&#34; TworzFormularz&#34;体:
public void TworzFormularz()
{
referencjeFormularzy = new Dictionary<dynamic, FormularzDefinicjaPola>();
Formularz f = impuls.pobierzFormularz(krpEtapDlaOsoby.form_id_formularza);
if (f == null) //sprawdz czy znaleziono formularz
{
MessageBox.Show("Nie znaleziono formularza.", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Close();
return;
}
FormularzDefinicjaPola[] pola = impuls.pobierzPolaDlaFormularza(f.fdIdDefinicji); // pobierz pola dla tego formularza
foreach (FormularzDefinicjaPola pole in pola) // dla wszystkich pól na formularzu
{
List<ProceduraEtapuPolaFormularza> prawaPolFormularza = impuls.pobierzPrawaPolFormularza(krpEtapDlaOsoby.pe_id_etapu, pole.idPola, null); //prawa dostepu
if (pole.typPola.ToUpper() == "EDIT" || pole.typPola.ToUpper() == "MEMO")
{
TextEdit t = new TextEdit();
t.AutoSize = false;
t.Location = new Point(pole.pozycjaX, pole.pozycjaY);
t.Size = new Size(pole.szerokosc, pole.wysokosc);
t.Name = pole.idPola.ToString();
t.Tag = pole.typDanych;
panelControl1.Controls.Add(t);
t.AutoSize = false;
LabelControl label = new LabelControl();
label.Text = pole.opisWyswietlany;
label.Name = pole.idPola.ToString();
label.Location = new Point(pole.pozycjaX-label.Width-1 , pole.pozycjaY);
panelControl1.Controls.Add(label);
label.Location = new Point(pole.pozycjaX - label.Width-1 , pole.pozycjaY);
panelControl1.AutoSize = false;
label.AutoSize = false;
//obsluga praw do pola
ProceduraEtapuPolaFormularza prawoPola = prawaPolFormularza.FirstOrDefault();
if (prawaPolFormularza.Count > 1)
{
Program.logger.Warn("KorespondencjaWindowForm.TworzFormularz(): Znaleziono wiecej jak jedno prawo do pola o definicji: " + pole.idPola + " dla etapu: " + krpEtapDlaOsoby.id_etapu);
}
if (prawoPola != null && prawoPola.widocznosc!=null)
{
if (prawoPola.widocznosc.ToUpper() == "EDYCJA" || prawoPola.widocznosc.ToUpper() == "EDIT" || prawoPola.widocznosc.ToUpper() == "EDITABLE" || prawoPola.widocznosc.ToUpper() == "EDIT ABLE" || prawoPola.widocznosc.ToUpper() == "EDIT_ABLE")
{
t.Enabled = true;
}
else if (prawoPola.widocznosc.ToUpper() == "TYLKO ODCZYT" || prawoPola.widocznosc.ToUpper() == "TYLKO_ODCZYT" || prawoPola.widocznosc.ToUpper() == "READ" || prawoPola.widocznosc.ToUpper() == "READ_ONLY" || prawoPola.widocznosc.ToUpper() == "READ ONLY")
{
t.Enabled = false;
}
else if (prawoPola.widocznosc.ToUpper() == "NIEWIDOCZNE" || prawoPola.widocznosc.ToUpper() == "INVISIBLE")
{
t.Visible = false;
label.Visible = false;
}
}
referencjeFormularzy.Add(t, pole);
}
if (pole.typPola.ToUpper() == "CXGRID")
{
DataTable dataSetGrida;
PoleFormularza[] widokDefinicjiGrida = impuls.pobierzDefinicjeGrida(pole.idPola,krpEtapDlaOsoby.form_id_formularza); // przekazujemy idDefinicjiPola, oraz idFormularza
if (widokDefinicjiGrida.Count() <= 0)
{
Program.logger.Error("TworzFormularz(): Nie wczytano kolumn dla grida o id_definicji: " + pole.idPola.ToString());
continue;
}
//tworzenie data source dla grida
dataSetGrida = UtworzDataTableDlaGrida(widokDefinicjiGrida,pole.idPola, true);
gridViewFormularz.CustomUnboundColumnData += GridView1_CustomUnboundColumnData;
PoleFormularza[] widokWartosciGrida = impuls.pobierzWidokGrida(pole.idPola, krpEtapDlaOsoby.form_id_formularza);
//jezeli sa wiersze...
if (widokWartosciGrida.Count() > 0)
{
}
grid.DataSource = dataSetGrida;
_formMain.LoadNavigatorImages24x24(ref grid);
gridViewFormularz.Name = pole.idPola.ToString();
//ustawienia grida.
grid.Location = new Point(pole.pozycjaX, pole.pozycjaY);
grid.Size = new Size(pole.szerokosc, pole.wysokosc);
grid.MainView = gridViewFormularz;
gridViewFormularz.InitNewRow
+= GridView1_InitNewRow;
grid.Select();
grid.Anchor = (AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left);
grid.KeyPress += Grid_KeyPress;
gridViewFormularz.OptionsBehavior.AllowAddRows =
DevExpress.Utils.DefaultBoolean.True;
grid.Width = panelControl1.Width;
gridViewFormularz.OptionsSelection.MultiSelect = true;
grid.UseEmbeddedNavigator = true;
panelControl1.Controls.Add(grid);
grid.ForceInitialize();
#region utworzenie ColumnEditow
foreach (GridColumn col in gridViewFormularz.Columns)
{
PoleFormularza poleGrida = widokDefinicjiGrida.Where(x => x.tytul == col.FieldName).FirstOrDefault();
if (poleGrida == null)
{
Program.logger.Error("TworzFormularz() : nie znaleziono definicji pola grid, dla pola o tytule: " + col.FieldName);
continue;
}
else if (poleGrida.rodzaj_pola == RodzajPolaEnum.B && poleGrida.lista_wartosci != null && poleGrida.lista_wartosci.Length > 0)
{
//TODO: oprogramuj button
continue;
}
else if (poleGrida.rodzaj_pola == RodzajPolaEnum.B && (poleGrida.lista_wartosci == null || poleGrida.lista_wartosci.Length == 0))
{
List<ProceduraEtapuPolaFormularza> prawoPolGrida = impuls.pobierzPrawaPolFormularza(krpEtapDlaOsoby.pe_id_etapu, pole.idPola, poleGrida.id_pola_g);
ProceduraEtapuPolaFormularza prawoPola2 = prawoPolGrida.FirstOrDefault();
if (prawoPola2!=null && (prawoPola2.widocznosc.ToUpper()=="NIEWIDOCZNE" || prawoPola2.widocznosc.ToUpper() == "INVISIBLE" || prawoPola2.widocznosc.ToUpper() == "NIEWIDOCZNY"))
{
col.Visible = false;
}
RepositoryItemTextEdit obj = new RepositoryItemTextEdit();
col.ColumnEdit = obj;
}
else
{
using (var t = impuls.connection.BeginTransaction())
{
try
{
List<ProceduraEtapuPolaFormularza> prawoPolGrida = impuls.pobierzPrawaPolFormularza(krpEtapDlaOsoby.pe_id_etapu, pole.idPola, poleGrida.id_pola_g);
ProceduraEtapuPolaFormularza prawoPola2 = prawoPolGrida.FirstOrDefault();
if (prawoPola2 != null && (prawoPola2.widocznosc.ToUpper() == "NIEWIDOCZNE" || prawoPola2.widocznosc.ToUpper() == "INVISIBLE" || prawoPola2.widocznosc.ToUpper() == "NIEWIDOCZNY"))
{
col.Visible = false;
}
RepositoryItemComboBox obj = new RepositoryItemComboBox();
col.ColumnEdit = obj;
}
catch (Exception error)
{
t.Rollback();
}
}
}
}
#endregion
UzupelijWierszeGrida(ref widokWartosciGrida, ref dataSetGrida);
UzupelnijEdytoryGrida(ref gridViewFormularz, widokDefinicjiGrida);
gridViewFormularz.Columns["PolaFormularza"].Visible = false;
// poczatek inicjalizacji wartosci grida (jeżeli użytkownik coś zmieni, to obsługa dalsza jest w evencie cell changed.
//jezeli uzytkownik chce dodac nowy wiersz, jego obsluga nastąpi w initNewRowEvent.
// impuls.pasteClipboardToGrid(gridView1);
}
if (pole.typPola.ToUpper() == "COMBOBOX")
{
ComboBoxEdit cbEdit = new ComboBoxEdit();
cbEdit.Name = pole.idPola.ToString();
cbEdit.Location = new Point(pole.pozycjaX , pole.pozycjaY);
cbEdit.Size = new Size(pole.szerokosc, pole.wysokosc);
if (pole.listaWartosci != null && !pole.listaWartosci.ToUpper().Contains("SELF") && pole.typListy == "D")
{
dynamic src = impuls.pobierzSelectDlaGrida(pole.listaWartosci);
cbEdit.Properties.Items.AddRange(src);
}
if (pole.typListy == "S" || pole.typListy == "B" && pole.listaWartosci != null && pole.listaWartosci.Length > 0)
{
string[] splity = @pole.listaWartosci.Split('\n');
cbEdit.Properties.Items.AddRange(splity);
}
cbEdit.AutoSize = false;
panelControl1.Controls.Add(cbEdit);
cbEdit.Visible = true;
LabelControl label = new LabelControl();
label.Text = pole.opisWyswietlany;
label.Name = pole.idPola.ToString();
label.Location = new Point(pole.pozycjaX-label.Width-1, pole.pozycjaY);
panelControl1.Controls.Add(label);
label.Location = new Point(pole.pozycjaX - label.Width-1 , pole.pozycjaY);
label.AutoSize = false;
cbEdit.AutoSize = false;
//obsluga praw do pola
ProceduraEtapuPolaFormularza prawoPola = prawaPolFormularza.FirstOrDefault();
if (prawaPolFormularza.Count > 1)
{
Program.logger.Warn("KorespondencjaWindowForm.TworzFormularz(): Znaleziono wiecej jak jedno prawo do pola o definicji: " + pole.idPola + " dla etapu: " + krpEtapDlaOsoby.id_etapu);
}
if (prawoPola != null && prawoPola.widocznosc != null)
{
if (prawoPola.widocznosc.ToUpper() == "EDYCJA" || prawoPola.widocznosc.ToUpper() == "EDIT" || prawoPola.widocznosc.ToUpper() == "EDITABLE" || prawoPola.widocznosc.ToUpper() == "EDIT ABLE" || prawoPola.widocznosc.ToUpper() == "EDIT_ABLE")
{
cbEdit.Enabled = true;
}
else if (prawoPola.widocznosc.ToUpper() == "TYLKO ODCZYT" || prawoPola.widocznosc.ToUpper() == "TYLKO_ODCZYT" || prawoPola.widocznosc.ToUpper() == "READ" || prawoPola.widocznosc.ToUpper() == "READ_ONLY" || prawoPola.widocznosc.ToUpper() == "READ ONLY")
{
cbEdit.Enabled = false;
}
else if (prawoPola.widocznosc.ToUpper() == "NIEWIDOCZNE" || prawoPola.widocznosc.ToUpper() == "INVISIBLE")
{
cbEdit.Visible = false;
label.Visible = false;
}
}
referencjeFormularzy.Add(cbEdit, pole);
}
}
SimpleButton button = new SimpleButton();
button.Text = "Zapisz";
button.Click += Button_Click;
button.Location = new Point(grid.Location.X , grid.Location.Y - 25);
panelControl1.Controls.Add(button);
SimpleButton buttonWyslij = new SimpleButton();
buttonWyslij.Text = "Wyślij";
panelControl1.ResumeLayout();
buttonWyslij.Location = new Point(button.Location.X + button.Width + 10, button.Location.Y);
panelControl1.PerformLayout();
panelControl1.Controls.Add(buttonWyslij);
buttonWyslij.Click += ButtonWyslij_Click;
pobierzWartosciPol(pola);
}
调用函数的地方:
using (var t = impuls.connection.BeginTransaction())
{
try
{
List<ProceduraEtapuPolaFormularza> prawoPolGrida = impuls.pobierzPrawaPolFormularza(krpEtapDlaOsoby.pe_id_etapu, pole.idPola, poleGrida.id_pola_g);
ProceduraEtapuPolaFormularza prawoPola2 = prawoPolGrida.FirstOrDefault();
if (prawoPola2 != null && (prawoPola2.widocznosc.ToUpper() == "NIEWIDOCZNE" || prawoPola2.widocznosc.ToUpper() == "INVISIBLE" || prawoPola2.widocznosc.ToUpper() == "NIEWIDOCZNY"))
{
col.Visible = false;
}
RepositoryItemComboBox obj = new RepositoryItemComboBox();
col.ColumnEdit = obj;
}
catch (Exception error)
{
t.Rollback();
}
}
答案 0 :(得分:0)
我发布的代码没有错。 它可能是调试器的一些问题,它在任何地方都显示空值。 我创建了一个“foreach”循环来迭代列表,并输入一次。
多次重新打开后,调试器的清理和构建解决方案问题已经消失。