У меня есть тип выпадающего списка cbpayment, например: (DD, CASH, CARD)
I have list view Named as listviewcashmembers
with items lastname(xxxx),
firstname(xxx),
postcode(xxx),
ddrerefernce(xxxx),
ddprovider(xxx)
Monthlyamount(xxx)
MembershipType(xxxx),
Status (xxxx)
Enddate (xxxx)
paymenttype(DD , CASH , CARD)
Я сделал это для генерации PDF, когда мы нажимаем на кнопку печати и выбираем соответствующее поле со списком (cbpaymenttype.Text).
код в основной форме похож на этот, и этот код будет вызывать другой класс также
private void btnPrint_Click(object sender, EventArgs e)
{
private const string DDPROVIDERMEMBERS_PATH = @"xxxxxxxxxx_{0}";
if (cbpaymenttype.Text == "DD ")
{
string path = string.Format(DDMEMBERSREPORT_PATH, DateTime.Now.ToString("ddMMyyyyHHmm"));
List<DDmembersmonthlyreport> ddmembersreportmembers = new List<DDmembersmonthlyreport>();
if (lstviewcashmembers.Items.Count != 0)
{
foreach (ListViewItem item in lstviewcashmembers.Items)
{
DDmembersmonthlyreport ddmembers = new DDmembersmonthlyreport();
ddmembers.member_Lastname = item.SubItems[1].Text;
ddmembers.member_Firstname = item.SubItems[2].Text;
ddmembers.Postcode = item.SubItems[3].Text;
ddmembers.ddReference = item.SubItems[4].Text;
ddmembers.ddprovider = item.SubItems[5].Text;
ddmembers.Monthlyamount = Convert.ToDecimal(item.SubItems[6].Text);
ddmembers.MembershipType = item.SubItems[7].Text;
ddmembers.Status = item.SubItems[8].Text;
ddmembers.Enddate = Convert.ToDateTime(item.SubItems[9].Text);
ddmembers.paymenttype = item.SubItems[10].Text;
ddmembersreportmembers.Add(ddmembers);
}
new PdfDDMembersMonthlyValueReport(ddmembersreportmembers, new Company(mf.gBaseUrl).GetSingleLineCompanyDetails(), path);
System.Diagnostics.Process.Start("explorer.exe", path);
}
if (cbpaymenttype.Text == "cash")
{
xxxxxxxxxx
new PdfCashMembersMonthlyValueReport(ddmembersreportmembers, new Company(mf.gBaseUrl).GetSingleLineCompanyDetails(), path);
System.Diagnostics.Process.Start("explorer.exe", path);
}
}
как это я сделал для всех опций в выпадающем списке (cbpaymenttype)
Я создал такой класс
public class DDmembersmonthlyreport
{
public string member_Lastname;
public string member_Firstname;
public string Postcode;
public string ddReference;
public string ddprovider;
public decimal Monthlyamount;
public string MembershipType;
public string Status;
public DateTime Enddate;
public string paymenttype;
}
public class "PdfDDMembersMonthlyValueReport"
{
private Document _document;
private Table _table;
private List<DDmembersmonthlyreport> _array;
private string _address;
public PdfDDMembersMonthlyValueReport(List<DDmembersmonthlyreport> array, string address, string exportpath)
{
_array = array;
_address = address;
Document ddreportdoc = CreateDocument();
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(true);
pdfRenderer.Document = ddreportdoc;
if (!Directory.Exists(exportpath))
Directory.CreateDirectory(exportpath);
pdfRenderer.RenderDocument();
pdfRenderer.Save(String.Format(@"{0}\DD members.pdf", exportpath));
}
public Document CreateDocument()
{
_document = new Document();
_document.Info.Title = "DD MEMBERS REPORT";
_document.Info.Author = "xxxxx";
DefineStyles();
CreatePage();
FillContent();
return _document;
}
private void DefineStyles()
{
Style style = _document.Styles["Normal"];
style.Font.Name = "Verdana";
style = _document.Styles[StyleNames.Header];
style.ParagraphFormat.AddTabStop("8cm", TabAlignment.Right);
style = _document.Styles[StyleNames.Footer];
style.ParagraphFormat.AddTabStop("7cm", TabAlignment.Center);
// Create a new style called Table based on style Normal
style = _document.Styles.AddStyle("Table", "Normal");
style.Font.Name = "Verdana";
style.Font.Size = 6;
// Create a new style called Reference based on style Normal
style = _document.Styles.AddStyle("Reference", "Normal");
style.ParagraphFormat.SpaceBefore = "6mm";
style.ParagraphFormat.SpaceAfter = "6mm";
style.ParagraphFormat.TabStops.AddTabStop("6cm", TabAlignment.Right);
}
private void CreatePage()
{
Section section = _document.AddSection();
// Create footer
Paragraph paragraph = section.Footers.Primary.AddParagraph();
paragraph.AddText(_address);
paragraph.Format.Font.Size = 8;
paragraph.Format.Alignment = ParagraphAlignment.Center;
paragraph = section.AddParagraph();
paragraph.Format.SpaceBefore = "1.5cm";
paragraph.Style = "Reference";
paragraph.AddFormattedText("DD MEMBERS MONTHLY VALUE REPORT", TextFormat.Bold);
paragraph.AddTab();
paragraph.AddDateField("dd MMM yyyy");
_table = section.AddTable();
_table.Style = "Table";
_table.Borders.Color = new Color(0, 0, 0);
//Defining the columns
Column column = _table.AddColumn("1.7cm"); //Lastname
column.Format.Alignment = ParagraphAlignment.Center;
column = _table.AddColumn("1.7cm"); // first name
column.Format.Alignment = ParagraphAlignment.Left;
column = _table.AddColumn("1.7cm"); // postcode
column.Format.Alignment = ParagraphAlignment.Left;
column = _table.AddColumn("1.7cm"); // DD ref
column.Format.Alignment = ParagraphAlignment.Left;
column = _table.AddColumn("1.7cm"); //DD provider Name
column.Format.Alignment = ParagraphAlignment.Left;
column = _table.AddColumn("1.7cm"); // Monthly Amount
column.Format.Alignment = ParagraphAlignment.Left;
column = _table.AddColumn("1.7cm"); // mship type
column.Format.Alignment = ParagraphAlignment.Left;
column = _table.AddColumn("1.7cm"); // status
column.Format.Alignment = ParagraphAlignment.Left;
column = _table.AddColumn("1.7cm"); // Expiry date
column.Format.Alignment = ParagraphAlignment.Left;
column = _table.AddColumn("1.7cm"); // payment type
column.Format.Alignment = ParagraphAlignment.Right;
// Create the header of the _table
Row row = _table.AddRow();
row.HeadingFormat = row.Format.Font.Bold = true;
row.Format.Alignment = ParagraphAlignment.Center;
row.Cells[0].AddParagraph("Last Name");
row.Cells[0].Format.Alignment = ParagraphAlignment.Left;
row.Cells[1].AddParagraph("First Name");
row.Cells[1].Format.Alignment = ParagraphAlignment.Left;
row.Cells[2].AddParagraph("Post Code");
row.Cells[2].Format.Alignment = ParagraphAlignment.Left;
row.Cells[3].AddParagraph("DD Reference");
row.Cells[3].Format.Alignment = ParagraphAlignment.Left;
row.Cells[4].AddParagraph("DDProvider Name");
row.Cells[4].Format.Alignment = ParagraphAlignment.Left;
row.Cells[5].AddParagraph("Monthly Amount");
row.Cells[5].Format.Alignment = ParagraphAlignment.Left;
row.Cells[6].AddParagraph("Memebrship Type");
row.Cells[6].Format.Alignment = ParagraphAlignment.Left;
row.Cells[7].AddParagraph("Status");
row.Cells[7].Format.Alignment = ParagraphAlignment.Left;
row.Cells[8].AddParagraph("ExpiryDate");
row.Cells[8].Format.Alignment = ParagraphAlignment.Left;
row.Cells[9].AddParagraph("payment type");
row.Cells[9].Format.Alignment = ParagraphAlignment.Left;
}
private void FillContent()
{
foreach (var item in _array)
{
// Each item fills two rows
Row row1 = _table.AddRow();
row1.TopPadding = 1.0;
Paragraph paragraph;
row1.Cells[0].VerticalAlignment = VerticalAlignment.Center;
row1.Cells[0].Format.Alignment = ParagraphAlignment.Left;
row1.Cells[0].AddParagraph(item.member_Lastname);
row1.Cells[1].Format.Alignment = ParagraphAlignment.Right;
paragraph = row1.Cells[1].AddParagraph(item.member_Firstname);
row1.Cells[2].Format.Alignment = ParagraphAlignment.Left;
paragraph = row1.Cells[2].AddParagraph(item.Postcode);
row1.Cells[3].Format.Alignment = ParagraphAlignment.Right;
paragraph = row1.Cells[3].AddParagraph(item.ddReference);
row1.Cells[4].Format.Alignment = ParagraphAlignment.Left;
paragraph = row1.Cells[4].AddParagraph(item.ddprovider);
row1.Cells[5].Format.Alignment = ParagraphAlignment.Right;
paragraph = row1.Cells[5].AddParagraph(item.Monthlyamount.ToString("F2"));
row1.Cells[6].Format.Alignment = ParagraphAlignment.Left;
paragraph = row1.Cells[6].AddParagraph(item.MembershipType);
row1.Cells[7].Format.Alignment = ParagraphAlignment.Right;
paragraph = row1.Cells[7].AddParagraph(item.Status);
row1.Cells[8].Format.Alignment = ParagraphAlignment.Left;
paragraph = row1.Cells[8].AddParagraph(item.Enddate.ToString("dd MMM yyyy"));
row1.Cells[9].Format.Alignment = ParagraphAlignment.Right;
paragraph = row1.Cells[9].AddParagraph(item.paymenttype);
}
}
}
Я создал эти классы для различных параметров комбинированного списка (cbpaymenttype) для печати списочных элементов для выбора комбинированных элементов
Моя проблема в том, что я хочу использовать единственный единственный класс для различных типов опций в "cbpaymenttype"
Может ли кто-нибудь дать представление об этом, используя один класс для разных типов опций для
cbpaymenttype
можно ли передать значение cbpaymenttype в этот "ddmembers.paymenttype"
Большое спасибо