PDA

View Full Version : سوال: تغییر چینش ستون های DataTable



رامین مرادی
سه شنبه 22 خرداد 1397, 10:41 صبح
سلام دوستان بهترین روش برای تغییر چینش ستون های دیتاتیبل چیه؟ تعداد ستون نامعلومه
برای مثال ستون های زیر رو داریم
نام-نام خانوادگی- تاریخ تولد

میخوایم به صورت زیر بشه

تاریخ تولد-نام خانوادگی-نام

یه جورایی معکوس اولی

danialafshari
سه شنبه 22 خرداد 1397, 12:23 عصر
https://stackoverflow.com/questions/3757997/how-to-change-datatable-columns-order

رامین مرادی
چهارشنبه 23 خرداد 1397, 08:02 صبح
https://stackoverflow.com/questions/3757997/how-to-change-datatable-columns-order

ممنون اینو تست کردم قبلا که سرچ کرده بودم اما جواب درست نگرفتم.

Mahmoud.Afrad
چهارشنبه 23 خرداد 1397, 22:35 عصر
برای چی نیاز به این کار دارید؟
معمولا در زمان نمایش در کنترل مورد نظر میشه ترتیب را تغییر داد.

رامین مرادی
پنج شنبه 24 خرداد 1397, 08:01 صبح
برای چی نیاز به این کار دارید؟
معمولا در زمان نمایش در کنترل مورد نظر میشه ترتیب را تغییر داد.

یه تابع نوشتم که دیتاتیبلم رو میبرم تو ورد و یه جدول میکنم. ولی خب متاسفانه اونجا دایرکشن رو نمیشه تغییر داد و جدول چپ به راست ساخته میشه . و ستون ها برعکس هستن. میخوام همینجا تو سی شارپ ستون ها رو جابجا کنم و ببرم تو ورد تا درست بی افتن. دستی میشه یه دیتاتیبل جدید ساخت و اصلاح کردشون ولی چون تعداد دیتاتیبل زیاده میخوام یه راه آسونتر داشته باشم برا اینکار.

danialafshari
پنج شنبه 24 خرداد 1397, 08:48 صبح
ممنون اینو تست کردم قبلا که سرچ کرده بودم اما جواب درست نگرفتم.
با سلام
چطور جواب نداد؟
مطمئنید درست تست کردید؟
پروژه ضمیمه رو بررسی کنید.
ID - FirstName - LastName
تبدیل:
LastName - FirstName - ID
موفق باشید

رامین مرادی
پنج شنبه 24 خرداد 1397, 13:56 عصر
با سلام
چطور جواب نداد؟
مطمئنید درست تست کردید؟
پروژه ضمیمه رو بررسی کنید.
ID - FirstName - LastName
تبدیل:
LastName - FirstName - ID
موفق باشید

متاسفانه آنتی ویروس به فایلتون گیر داد.
ستون ها رو قاطی میکنه مثلا من شماره گذاشتم اما در عمل هر دفعه با یه ترتیبی تغییر میده. نمیدونم شاید مشکل از اون قسمتیه که تبدیل به ورد میکنه.
بازم ممنون

Mahmoud.Afrad
پنج شنبه 24 خرداد 1397, 14:07 عصر
متاسفانه آنتی ویروس به فایلتون گیر داد.
ستون ها رو قاطی میکنه مثلا من شماره گذاشتم اما در عمل هر دفعه با یه ترتیبی تغییر میده. نمیدونم شاید مشکل از اون قسمتیه که تبدیل به ورد میکنه.
بازم ممنون

کد همون قسمت رو بزارید.

چک کنید ببینید میشه جدول رو راست به چپ کرد یا نه.

رامین مرادی
پنج شنبه 24 خرداد 1397, 14:24 عصر
کد همون قسمت رو بزارید.

چک کنید ببینید میشه جدول رو راست به چپ کرد یا نه.

متاسفانه ورد راست چین نشد کد اون قسمتم میزارم براتون



static public void ToWord(DataTable mytable,List<string> myHeader)
{
Document doc = new Document();
Section s = doc.AddSection();
s.TextDirection = TextDirection.RightToLeftRotated;
Table table = s.AddTable(true);
//Add Cells
table.ResetCells(mytable.Rows.Count + 1, myHeader.Count);
//Header Row
TableRow FRow = table.Rows[0];
FRow.IsHeader = true;
//Row Height
FRow.Height = 23;
//Header Format
FRow.RowFormat.BackColor = Color.AliceBlue;
for (int i = 0; i < myHeader.Count;i++ )
{
//Cell Alignment
Paragraph p = FRow.Cells[i].AddParagraph();
FRow.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
p.Format.HorizontalAlignment = Spire.Doc.Documents.HorizontalAlignment.Center;
//Data Format
TextRange TR = p.AppendText(myHeader[i]);
TR.CharacterFormat.FontName = "B Nazanin";
TR.CharacterFormat.FontSize = 14;
TR.CharacterFormat.TextColor = Color.Teal;
TR.CharacterFormat.Bold = true;
}
//Data Row
for (int r = 0; r < mytable.Rows.Count; r++)
{
TableRow DataRow = table.Rows[r + 1];
//Row Height
DataRow.Height = 20;
//C Represents Column.
for (int c = 0; c < mytable.Columns.Count; c++)
{
//Cell Alignment
DataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
//Fill Data in Rows
Paragraph p2 = DataRow.Cells[c].AddParagraph();
TextRange TR2 = p2.AppendText(mytable.Rows[r][c].ToString());
//Format Cells
p2.Format.HorizontalAlignment = Spire.Doc.Documents.HorizontalAlignment.Center;
TR2.CharacterFormat.FontName = "B Nazanin";
TR2.CharacterFormat.FontSize = 12;
TR2.CharacterFormat.TextColor = Color.Brown;
}
}
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Word files (*.docx)|*.docx";
//Empty the FileName text box of the dialog
sfd.FileName = String.Empty;
//Set default extension as .txt
sfd.DefaultExt = ".docx";
//Open the dialog and determine which button was pressed
DialogResult result = sfd.ShowDialog();
//If the user presses the Save button
if (result == DialogResult.OK)
{
doc.SaveToFile(sfd.FileName, FileFormat.Docx2013);
DialogResult dr = MessageBox.Show("آیا میخواهید فایل باز شود؟","",MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes)
{
System.Diagnostics.Process.Start(sfd.FileName);
}
}
}



از spireاستفاده میکنم این کد رو طبق مستنداتش میزارم اما راست چین نیست

s.TextDirection = TextDirection.RightToLeftRotated;

Mahmoud.Afrad
پنج شنبه 24 خرداد 1397, 20:57 عصر
یک راه هم این هست که در حلقه هایی که روی ستون زده میشن، شمارنده حلقه از آخرین اندیس به سمت صفر نزول کند.

رامین مرادی
شنبه 26 خرداد 1397, 00:07 صبح
یک راه هم این هست که در حلقه هایی که روی ستون زده میشن، شمارنده حلقه از آخرین اندیس به سمت صفر نزول کند.

برا هدر همینکارو کردم درست احرا شد اما دیتا تیبل نه. باید یه دونه دیتا تیبل دیگه بسازم و ستونهارو برعکس تهریف کنم. که این روش هم وقت زیادی ازم میگیره