Einstellen von ElementSource in DataGridComboboxColumn mit separater DatenbanktabelleC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Einstellen von ElementSource in DataGridComboboxColumn mit separater Datenbanktabelle

Post by Anonymous »

Meine erste Stackexchange -Frage, also sagen Sie mir, ob ich etwas falsch mache. Ich war die meiste Zeit erfolgreich, aber ich nehme meine erste Datentabelle mit Datenbindung an. Es scheint das Schwierigste zu sein, da die Bindung hauptsächlich in XAML als in Code behandelt wird. Spalten als Kombinationsbox. Es wird derzeit als Zahl (1-10) dargestellt, aber ich benötige die Beschreibung, die mit der Zahl einhergeht, die sich in einer anderen Tabelle in der Datenbank befindet. Ich möchte, dass dieser Wert das aktuell ausgewählte Element im Combobox ist. />[*]intcaseno
[*]newreferral
[*]screendate
[*]eligible
[*]noneligibilityreason(this is the one to make into a combobox)


Noneligrason < /strong> (Dies ist der Untertable, der sich mit Nicht -Religiosität übereinstimmt. Ich denke, die itemsSource: < /p>

NERList.GetNameValueList();
< /code>

Wie für die ElementSoundsource möchte ich alle NichteligreasonDESC -Werte. Natürlich ist es die Frage, dass die Nichtfabrik der Nicht -Den -Nicht -Den -Reichweite der Nicht -Düsterung entspricht. Ich fand dieses Beispiel, das das Gleiche zu tun scheint, aber ohne die Datenbank habe ich stattdessen Klassen verwendet: < /p>

Ich habe versucht, dies zu duplizieren, da ich dachte



























< /code>

< /p>

Und der Code dahinter: < /p>

using CslaFactoryBusinessObjects;
...

namespace WpfTestProject
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{

WpfTestProject.caseviewDataSet caseviewDataSet = ((WpfTestProject.caseviewDataSet)(this.FindResource("caseviewDataSet")));
// Load data into the table modreview. You can modify this code as needed.
WpfTestProject.caseviewDataSetTableAdapters.modreviewTableAdapter caseviewDataSetmodreviewTableAdapter = new WpfTestProject.caseviewDataSetTableAdapters.modreviewTableAdapter();
caseviewDataSetmodreviewTableAdapter.Fill(caseviewDataSet.modreview);
System.Windows.Data.CollectionViewSource modreviewViewSource = ((CollectionViewSource)(this.FindResource("modreviewViewSource")));
modreviewViewSource.View.MoveCurrentToFirst();

noneligibilityreasonColumn.ItemsSource = NERList.GetNameValueList();
}
}
< /code>

} < /p>

Der größte Teil dieses Code wurde generiert, wenn ich aus Datenquellen fallen ließ, aber die letzte Zeile im Code dahinter ist, wo ich denke, dass ich die ElementSource hinzufügen sollte. Ich bin mir nicht sicher, ob es geladen ist, aber es scheint, als wäre es dort in Ordnung. Auch nicht sicher, ob es in XAML eine Möglichkeit gibt, dies stattdessen zu tun. des Code). Ich glaube//from Program.cs used in setupModRvwGrdHdr()
public static void ListControlBinding(ref UltraCombo comboBox, object lkupdataSource, string displayMember,
string valueMember, object objDataSource, string objProp) {
comboBox.DataSource = lkupdataSource;
comboBox.DisplayMember = displayMember;
if (!string.IsNullOrEmpty(valueMember))
comboBox.ValueMember = valueMember;
if (objDataSource != null)
comboBox.DataBindings.Add("Value", objDataSource, objProp);
}

//from the code for the specific winform
private void setupModRvwGrdHdr() {
cbNonEligReason.DataBindings.Clear();
grdModReviews.DataSource = bsModRvws;

Program.ListControlBinding(ref cbNonEligReason, NERList.GetNameValueList(), "Value", "Key", bsModRvws,
"NonEligibleReasonIDStr");
cbNonEligReason.DisplayLayout.Bands[0].Columns["Key"].Hidden = true;
cbNonEligReason.DisplayLayout.Bands[0].Columns["Value"].Header.Caption = "Noneligiblity Reason";

grdModReviews.DisplayLayout.Bands[0].Columns["reviewnum"].CellActivation = Activation.NoEdit;
grdModReviews.DisplayLayout.Bands[0].Columns["intcaseno"].Hidden = true;
grdModReviews.DisplayLayout.Bands[0].Columns["noneligibilityreason"].Hidden = true;

grdModReviews.DisplayLayout.Bands[0].Columns["screendate"].Hidden = false;
grdModReviews.DisplayLayout.Bands[0].Columns["screendate"].Header.Caption = "Date of Screen";
grdModReviews.DisplayLayout.Bands[0].Columns["screendate"].Width = 100;
grdModReviews.DisplayLayout.Bands[0].Columns["screendate"].EditorComponent = dteModRvwDate;

grdModReviews.DisplayLayout.Bands[0].Columns["eligible"].Hidden = false;
grdModReviews.DisplayLayout.Bands[0].Columns["eligible"].Header.Caption = "Eligible";
grdModReviews.DisplayLayout.Bands[0].Columns["eligible"].Width = 70;

grdModReviews.DisplayLayout.Bands[0].Columns["NonEligibleReasonIDStr"].Hidden = false;
grdModReviews.DisplayLayout.Bands[0].Columns["NonEligibleReasonIDStr"].Header.Caption =
"Reason for Noneligibility";
grdModReviews.DisplayLayout.Bands[0].Columns["NonEligibleReasonIDStr"].Width = 250;
grdModReviews.DisplayLayout.Bands[0].Columns["NonEligibleReasonIDStr"].EditorComponent = cbNonEligReason;
grdModReviews.DisplayLayout.Bands[0].Columns["NonEligibleReasonIDStr"].Nullable =
Infragistics.Win.UltraWinGrid.Nullable.Nothing;
}
< /code>

Dies ist ein ziemlich großes Programm, und es könnte einige hilfreiche Funktionen in den CSLAFACTORTORYBusiness -Klassen geben, aber ich denke, ich sollte lernen, wie man das tut, um Datenmanipulation besser zu verstehen. Ich bin mir einfach nicht sicher, wie jede der Bindungseigenschaften funktioniert und wie sie in diesem speziellen Fall angewendet werden. Schließlich musste ich das Handtuch werfen und hier ein Konto erstellen. Entschuldigung für die Länge, aber ich wollte spezifisch sein und zeigen, dass ich schon eine Weile dabei bin. < /P>

Bitte Hilfe! < /P>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post