View Full Version : تغییر مقدار یک سطر و ستون مشخص قبل از چاپ...
mahdi5121
جمعه 29 مهر 1390, 23:53 عصر
سلام ...
کسی می دونه چطور می شه به یک ستون از یک سطر مشخص ،قبل از چاپ دسترسی و مقدار اون رو عوض کرد.
مثلا" مقدار سطر ششم،ستون سوم رو عوض کنیم.
ممنون می شم اگه کدش رو بگید تو سی شارپ چطوریه؟
mahdi5121
شنبه 30 مهر 1390, 12:12 عصر
من تا اون جا که تونستم و گشتم این کد رو نوشتم اما باز کار نمی کنه می خوام فیلد هایی که مقدارشون 'US' هست، رنگشون عوض بشه.
Stimulsoft.Report.Components.Table.StiTable
table1 = stiReport1.GetComponents()["Table1"] as Stimulsoft.Report.Components.Table.StiTable;
foreach (Stimulsoft.Report.Dictionary.StiRow dataRow in table1.Rows)
{
if ((string)dataRow["Country"] == "US")
{
StiText Table1 = stiReport1.GetComponents()["Table1_Cell11"] as StiText;
Table1.Brush = new StiSolidBrush(Color.LightGreen);
Table1.Border = new StiBorder(StiBorderSides.All, Color.Black, 1, StiPenStyle.Solid);
}
}
الان به table1.Rows ارور می ده که همچنین کلاسی ، متدی به نام Rows نداره ...
ممنون می شم که راهنمایی کنید...
ممنون
PetekDincos
شنبه 30 مهر 1390, 16:58 عصر
با سلام
شما برای این کار در خود گزارش از Condition ها استفاده نمایید به این صورت که در دیتا باند بر روی فیلدی که می خواهی شرط اعمال کنی کلیک کن بعد در پراپرتی هاش پراپرتی condition رو انتخاب کن یک صفحه باز می شه خودت یک Add Condition و بقیه کارها معلومه اگه نتونستی شب توضیح می دم و نبازی به کد نوبسی هم نداره با تشکر
mahdi5121
شنبه 30 مهر 1390, 21:57 عصر
درسته ، ولی اون چیزی که من گفتم یه مثال بود راستش رو بخوان می خوام گزارش، مثل زیر بشه :
http://www.irupload.ir/images/g25y8j3pgwz8v7crl92k.jpg
اون رکورد هایی که دارای شماره ی عضویت یکسانی هست،یک رنگ بشه، این کار رو می شه با پراپرتی انجام داد؟ باید متغیر تعریف کرد.
PetekDincos
شنبه 30 مهر 1390, 23:25 عصر
با سلام
برای این به نظر من شاید بشه از خود گروه بندی بر اساس شماره عضویت کاری کرد و یا اینکه در خود کد فرم اون لیستی رو که می خواهی به گزارش پاس بدی بیایی با کد یه فیلد اضافی از نوع bool در لیستت قرار بدی و اون رکوردهایی که مقدار شماره عضویت یکسان دارند یک در میان true,false کنی بعد در گزارش لیستت رو بر اساس شماره عضویت مرتب کنی و با یک Condition بگی که اگر فیلد اضافی مقدار true داشت مثلا رنگ Black قرار بدی و اگر مقدار false داشت رنگ سفید قرار بدی با تشکر
PetekDincos
شنبه 30 مهر 1390, 23:54 عصر
با سلام
این نمونه رو ببین متوجه می شی چیکار کردم با تشکر
mahdi5121
یک شنبه 01 آبان 1390, 17:26 عصر
می شه کد رو توضیح بدین.
private void Button_Click(object sender, RoutedEventArgs e)
{
List<MyClass> MyList = new List<MyClass>()
{
new MyClass(){Name="Petek01",Family="Dincoz",Age=35},
new MyClass(){Name="Petek02",Family="Dincoz",Age=35},
new MyClass(){Name="GulBen",Family="Ergan",Age=37},
new MyClass(){Name="Ebru01",Family="Gundesh",Age=40},
new MyClass(){Name="Name02",Family="Family",Age=42},
new MyClass(){Name="Name01",Family="Family",Age=42},
new MyClass(){Name="Ebru02",Family="Gundesh",Age=40},
};
List<int> MyAgeList = MyList.GroupBy(n => n.Age).Select(n =>n.Select(h=>h.Age).FirstOrDefault()).ToList();
bool MyType=false;
foreach (int item in MyAgeList)
{
MyType=!MyType;
List<MyClass> MyItems = MyList.Where(n => n.Age == item).ToList();
foreach (var myclass in MyItems)
myclass.TypeColor = MyType;
}
Stimulsoft.Report.StiReport MyReport = new Stimulsoft.Report.StiReport();
MyReport.Load("..//..//Report.mrt");
MyReport.RegData("DataSource1", MyList);
MyReport.Show();
}
}
public class MyClass
{
public string Name { get; set; }
public string Family { get; set; }
public int Age { get; set; }
public bool TypeColor { get; set; }
}
خیلی ممنون...
PetekDincos
یک شنبه 01 آبان 1390, 20:08 عصر
می شه کد رو توضیح بدین.
private void Button_Click(object sender, RoutedEventArgs e)
{
List<MyClass> MyList = new List<MyClass>()
{
new MyClass(){Name="Petek01",Family="Dincoz",Age=35},
new MyClass(){Name="Petek02",Family="Dincoz",Age=35},
new MyClass(){Name="GulBen",Family="Ergan",Age=37},
new MyClass(){Name="Ebru01",Family="Gundesh",Age=40},
new MyClass(){Name="Name02",Family="Family",Age=42},
new MyClass(){Name="Name01",Family="Family",Age=42},
new MyClass(){Name="Ebru02",Family="Gundesh",Age=40},
};
List<int> MyAgeList = MyList.GroupBy(n => n.Age).Select(n =>n.Select(h=>h.Age).FirstOrDefault()).ToList();
bool MyType=false;
foreach (int item in MyAgeList)
{
MyType=!MyType;
List<MyClass> MyItems = MyList.Where(n => n.Age == item).ToList();
foreach (var myclass in MyItems)
myclass.TypeColor = MyType;
}
Stimulsoft.Report.StiReport MyReport = new Stimulsoft.Report.StiReport();
MyReport.Load("..//..//Report.mrt");
MyReport.RegData("DataSource1", MyList);
MyReport.Show();
}
}
public class MyClass
{
public string Name { get; set; }
public string Family { get; set; }
public int Age { get; set; }
public bool TypeColor { get; set; }
}
خیلی ممنون...
با سلام
در کد بالا من بک لیست از کلاس MyClass (که در اینجا جدول شماست) به نام MyList ایجاد کردم (یا یک کوئری از جدولم MyClass گرفتم و در یک لیست قرار دادم) و سپس از لیست MyList یک گروهبندی می کنم بر اساس پراپرتی Age (که در جدول شما فکر کنم شماره عضویت بود) تا تعداد Age های متفاوت رو بدست بیارم سپس در داخل یک حلقه بر اساس Age های متفاوتم می یام از لیست MyList سن های یکسان رو بدست می یارم و یک در میان پراپرتی TypeColor رو true,false می کنم سپس گزارش رو لود و Show می کنم و در داخل خود گزارش با یک Condition بر اساس فیلد TypeColor تعیین می کنم که اگر true بود یک رنگ و اگر false بود یک رنگ دیگه قرار بده با تشکر
mahdi5121
یک شنبه 01 آبان 1390, 20:22 عصر
MyList.GroupBy(n => n.Age).Select(n =>n.Select(h=>h.Age).FirstOrDefault()).ToList();
و
List<MyClass> MyItems = MyList.Where(n => n.Age == item).ToList();
این کد ها رو هم می شه توضیح بدید؛منظور از n , h چیه؟
راستی، من داده هام توی دیتا تیبله باید بریزم توی یه لیست یا اینکه معادل کدهای بالا رو تو زبان اس کیو ال بنویسم.
PetekDincos
یک شنبه 01 آبان 1390, 21:00 عصر
با سلام
شما نمی دونم با دستورات LINQ آشنایی دارید یا نه چون اینها رو من با این دستورات نوشتم و نمی دونم معادلش در دستورات Sql چیه توضیح می دم خودت ببین با دستورات sql چطور می نویسی
MyList.GroupBy(n => n.Age).Select(n =>n.Select(h=>h.Age).FirstOrDefault()).ToList();
در این دستور من اومدم لیستم رو بر اساس فیلد Age گروه بندی کردم و در گروه بندی یک لیست (مجموعه و یا کالکشن) برگشت داده می شه و از این لیست برگشتی یک Select انجام دادم تا فقط فیلد Age برگشت داده بشه چون نیازی به بقیه فیلدها نداشتم و n,h هر کدام یک شی از نوع لیستی است که می خواهی بر روی رو اون لیست گروه بندی و یا select انجام بدی
List<MyClass> MyItems = MyList.Where(n => n.Age == item).ToList();
و در اینجا هم می یام از لیست کلی یک لیست بر اساس هر Age می گیرم و در کد ادامه اش فیلد TypeColor مربوط به هر Age رو مقدار دهی می کنم و نمی دونم متوجه شدی یا نه با تشکر
mahdi5121
پنج شنبه 05 آبان 1390, 22:34 عصر
ممنون از راهنمایی که کردید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.